Name: series-workflowszm7m Phase: Failed StartedAt: 2026-07-10 08:17:03 +0000 UTC FinishedAt: 2026-07-10 08:47:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszm7m[0] Phase: Succeeded StartedAt: 2026-07-10 08:17:03 +0000 UTC FinishedAt: 2026-07-10 08:47:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszm7m[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 08:17:03 +0000 UTC FinishedAt: 2026-07-10 08:47:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBDeXByZXNzIChDWVcpIHZlbmRvci1zcGVjaWZpYyBmaXJtd2FyZSBvcGVyYXRpb25zIGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIChicmNtZm1hYykgd2lyZWxlc3MgZHJpdmVyLiBUaGUgQlJDTUZfRldWRU5ET1JfQ1lXIHZhcmlhbnQgaXMgb25seSBib3VuZCB0byBzcGVjaWZpYyBTRElPIGFuZCBQQ0llIGRldmljZSBJRHMuIFVTQiBkZXZpY2VzLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkLCBhcmUgZXhwbGljaXRseSBib3VuZCB0byB0aGUgV0NDIHZhcmlhbnQgaW5zdGVhZC4gU2luY2UgU0RJTyBhbmQgUENJZSBCcm9hZGNvbSBXaS1GaSBkZXZpY2VzIGNhbm5vdCBiZSBzb2Z0d2FyZS1lbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMGUyYTM4ZjVhOGNjNTMxZDVkNDk3NTZiZTI4NzMwYTg4ODkyZDkxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDg6NDM6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuaW5kZXggY2UwOWQ0NGZhNzNjZjguLmNjYTUzZmYxOTM2YTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG5AQCAtMjMsNiAmIzQzOzIzLDggQEBcbiAjZGVmaW5lIE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FXHQ0MDAwXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfV0FJVF9USU1FXHQoTUdNVF9BVVRIX0ZSQU1FX0RXRUxMX1RJTUUgJiM0MzsgMTAwKVxuIFxuJiM0MztzdGF0aWMgYXRvbWljX3QgYnJjbWZfY3l3X21nbXRfdHhfaWQgPSBBVE9NSUNfSU5JVCgwKTtcbiYjNDM7XG4gc3RhdGljIGludCBicmNtZl9jeXdfc2V0X3NhZV9wd2Qoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX2NyeXB0b19zZXR0aW5ncyAqY3J5cHRvKVxuIHtcbkBAIC0xNTUsNyAmIzQzOzE1Nyw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2VkYVswXSwgXHUwMDI2bWdtdC1cdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuLVx0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuJiM0MztcdG1mX3BhcmFtcy1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMihhdG9taWNfaW5jX3JldHVybihcdTAwMjZicmNtZl9jeXdfbWdtdF90eF9pZCkpO1xuIFx0bWVtY3B5KG1mX3BhcmFtcy1cdTAwM2VkYXRhLCBcdTAwMjZidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSxcbiBcdCAgICAgICBsZTE2X3RvX2NwdShtZl9wYXJhbXMtXHUwMDNlbGVuKSk7XG4gXG5AQCAtMjAwLDcgJiM0MzsyMDIsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi1cdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XG4mIzQzO1x0c3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1cyA9IHt9O1xuIFx0aW50IHJldCA9IDA7XG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O0VudGVyXFxuXCYjMzQ7KTtcbkBAIC0yMDgsNiAmIzQzOzIxMCw4IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0ZHJ2ciA9IGlmcC1cdTAwM2VkcnZyO1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xuJiM0MztcdFx0aWYgKHBhcmFtcy1cdTAwM2VwbWtpZClcbiYjNDM7XHRcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbiBcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpO1xuIFx0fSBlbHNlIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7RXh0ZXJuYWwgYXV0aGVudGljYXRpb24gZmFpbGVkOiBzdGF0dXM9JWRcXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIG9wZXJhdGlvbnMgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgKGJyY21mbWFjKSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBCUkNNRl9GV1ZFTkRPUl9DWVcgdmFyaWFudCBpcyBvbmx5IGJvdW5kIHRvIHNwZWNpZmljIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gVVNCIGRldmljZXMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QsIGFyZSBleHBsaWNpdGx5IGJvdW5kIHRvIHRoZSBXQ0MgdmFyaWFudCBpbnN0ZWFkLiBTaW5jZSBTRElPIGFuZCBQQ0llIEJyb2FkY29tIFdpLUZpIGRldmljZXMgY2Fubm90IGJlIHNvZnR3YXJlLWVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzBlMmEzOGY1YThjYzUzMWQ1ZDQ5NzU2YmUyODczMGE4ODg5MmQ5MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDEwIDA4OjQzOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwppbmRleCBjZTA5ZDQ0ZmE3M2NmOC4uY2NhNTNmZjE5MzZhNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jCkBAIC0yMyw2ICYjNDM7MjMsOCBAQAogI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfRFdFTExfVElNRQk0MDAwCiAjZGVmaW5lIE1HTVRfQVVUSF9GUkFNRV9XQUlUX1RJTUUJKE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FICYjNDM7IDEwMCkKIAomIzQzO3N0YXRpYyBhdG9taWNfdCBicmNtZl9jeXdfbWdtdF90eF9pZCA9IEFUT01JQ19JTklUKDApOwomIzQzOwogc3RhdGljIGludCBicmNtZl9jeXdfc2V0X3NhZV9wd2Qoc3RydWN0IGJyY21mX2lmICppZnAsCiAJCQkJIHN0cnVjdCBjZmc4MDIxMV9jcnlwdG9fc2V0dGluZ3MgKmNyeXB0bykKIHsKQEAgLTE1NSw3ICYjNDM7MTU3LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAKIAltZW1jcHkoJmFtcDttZl9wYXJhbXMtJmd0O2RhWzBdLCAmYW1wO21nbXQtJmd0O2RhWzBdLCBFVEhfQUxFTik7CiAJbWVtY3B5KCZhbXA7bWZfcGFyYW1zLSZndDtic3NpZFswXSwgJmFtcDttZ210LSZndDtic3NpZFswXSwgRVRIX0FMRU4pOwotCW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7CiYjNDM7CW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoYXRvbWljX2luY19yZXR1cm4oJmFtcDticmNtZl9jeXdfbWdtdF90eF9pZCkpOwogCW1lbWNweShtZl9wYXJhbXMtJmd0O2RhdGEsICZhbXA7YnVmW0RPVDExX01HTVRfSERSX0xFTl0sCiAJICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy0mZ3Q7bGVuKSk7CiAKQEAgLTIwMCw3ICYjNDM7MjAyLDcgQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIHsKIAlzdHJ1Y3QgYnJjbWZfaWYgKmlmcDsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyOwotCXN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7CiYjNDM7CXN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTsKIAlpbnQgcmV0ID0gMDsKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwpAQCAtMjA4LDYgJiM0MzsyMTAsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmcCA9IG5ldGRldl9wcml2KGRldik7CiAJZHJ2ciA9IGlmcC0mZ3Q7ZHJ2cjsKIAlpZiAocGFyYW1zLSZndDtzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykgewomIzQzOwkJaWYgKHBhcmFtcy0mZ3Q7cG1raWQpCiYjNDM7CQkJbWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtJmd0O3Bta2lkLCBXTEFOX1BNS0lEX0xFTik7CiAJCWF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTsKIAl9IGVsc2UgewogCQlicGh5X2VycihkcnZyLCAmIzM0O0V4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXG4mIzM0OywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyOAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDMzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCcm9hZGNvbSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLCBzcGVjaWZpY2FsbHkgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIGluIGEgZnV6emluZyBjb250ZXh0LiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGludHJvZHVjaW5nIGEgc3RhdGljIGF0b21pYyB2YXJpYWJsZSwgYGJyY21mX2N5d19tZ210X3R4X2lkYCwgYW5kIHVzaW5nIGl0IHRvIHNldCBgbWZfcGFyYW1zLSZndDtwYWNrZXRfaWRgIHdpdGhpbiB0aGUgYGJyY21mX2N5d19tZ210X3R4YCBmdW5jdGlvbiwgd2hpY2ggcmVwbGFjZXMgdGhlIHVzZSBvZiBgKmNvb2tpZWAuIEludGVyZXN0aW5nLiBBbHNvLCBpdCYjMzk7cyBpbml0aWFsaXppbmcgYGF1dGhfc3RhdHVzYCB0byB6ZXJvIGluIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgYW5kIGNvbmRpdGlvbmFsbHkgY29weWluZyB0aGUgYHBta2lkYCBpZiBpdCYjMzk7cyBub3QgTlVMTC4gU3RhbmRhcmQgZW5vdWdoLgoKQnV0IG5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGFwcGxpZXMgdG8gZnV6emluZy4gSXQmIzM5O3MgQnJvYWRjb20sIHdoaWNoIG9mdGVuIG1lYW5zIHNwZWNpZmljIGhhcmR3YXJlLiBHZXR0aW5nIGEgcmVhbCBCcm9hZGNvbSBkZXZpY2UgdG8gdGVzdCBvbiBjYW4gYmUgYSBjaGFsbGVuZ2UuIFZpcnR1YWxpemF0aW9uIHVzdWFsbHkgYWRkcyBhbm90aGVyIGxheWVyIG9mIGNvbXBsZXhpdHkgZm9yIHdpcmVsZXNzIGRyaXZlcnMgdW5sZXNzIHlvdSYjMzk7cmUgbHVja3kgZW5vdWdoIHRvIGZpbmQgYW4gZW11bGF0b3IgKGxpa2UgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBoZWxwZnVsIGZvciBnZW5lcmljIG1hYzgwMjExIHRlc3RpbmcsIGJ1dCBsaWtlbHkgbm90IGJyY21mbWFjKS4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSBmdXp6ZWQ/CgpXYWl0IGEgc2Vjb25k4oCmIGBicmNtZm1hY2AgaGFzIFVTQiwgU0RJTywgYW5kIFBDSUUgaW50ZXJmYWNlcy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gVVNCIGlzIGZhciBtb3JlIGFtZW5hYmxlIHRvIGZ1enppbmcuIFN5emthbGxlciBoYXMgZXhjZWxsZW50IFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgZ2FkZ2V0L2R1bW15X2hjZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYGJyY21mbWFjYCBzdXBwb3J0cyBVU0IuIFllcywgdGhlcmUmIzM5O3MgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AuIEdvb2QsIHRoYXQgb3BlbnMgdXAgYSBzaWduaWZpY2FudCBhdHRhY2sgc3VyZmFjZS4gTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBicmNtZl9jeXdfbWdtdF90eGAgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZS4gVGhhdCYjMzk7cyB0aGUga2V5IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfbWdtdF90eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyNjpzdGF0aWMgYXRvbWljX3QgYnJjbWZfY3l3X21nbXRfdHhfaWQgPSBBVE9NSUNfSU5JVCgwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTEwMz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjEwNDppbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEwNS1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTE1OS1cdG1lbWNweShcdTAwMjZtZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjE2MDpcdG1mX3BhcmFtcy1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMihhdG9taWNfaW5jX3JldHVybihcdTAwMjZicmNtZl9jeXdfbWdtdF90eF9pZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTYxLVx0bWVtY3B5KG1mX3BhcmFtcy1cdTAwM2VkYXRhLCBcdTAwMjZidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yMzY9c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzg6XHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzktXHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VleHRlcm5hbF9hdXRoID0gYnJjbWZfY3l3X2V4dGVybmFsX2F1dGg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzOAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgZHJpdmVyLCBgYnJjbWZtYWNgLCBpcyBzZXQgdXAuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBicmNtZl9jeXdfbWdtdF90eGAgaXMgc3BlY2lmaWNhbGx5IGFzc2lnbmVkIHRvIHRoZSBgZHJ2ci0mZ3Q7b3BzLSZndDttZ210X3R4YCBwb2ludGVyLiBBbmQsIHNpbWlsYXJseSwgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyBhc3NpZ25lZCB0byBgZHJ2ci0mZ3Q7b3BzLSZndDtleHRlcm5hbF9hdXRoYC4gVGhpcyBpcyBzdGFuZGFyZCBkcml2ZXIgYXJjaGl0ZWN0dXJlOyBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIGhhbmRsZWQgdGhpcyB3YXkuCgpOb3csIEkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBgYnJjbWZtYWNgIGluc3RhbmNlIGlzIHZ1bG5lcmFibGUgdmlhIFVTQi4gVGhhdCYjMzk7cyB3aGF0IEkgd2FudCB0byBuYWlsIGRvd24gbmV4dC4gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBgQ09ORklHX0JSQ01GTUFDX1VTQmAuIFRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgdGhlIGNydWNpYWwgaW5kaWNhdG9yIGFzIHRvIHdoZXRoZXIgVVNCIGlzIGV2ZW4gYSB2YWxpZCBwYXRoLiBJZiBpdCYjMzk7cyBlbmFibGVkLCB0aGVuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJZiBub3QsIHRoZW4gSSBjYW4gbW92ZSBvbiB0byBvdGhlciBhcmVhcyBvZiBpbnRlcmVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRk1BQ19VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGU9MzY9YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfU0RJTykgJiM0Mzs9IFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM4LVx0XHRiY21zZGgub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlOjM5OmJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgJiM0Mzs9IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGUtNDAtXHRcdHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMyMz1zdGF0aWMgaW5saW5lIGludCBicmNtZl9zZGlvX3JlZ2lzdGVyKHZvaWQpIHsgcmV0dXJuIDA7IH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjMyNjojaWZkZWYgQ09ORklHX0JSQ01GTUFDX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMyNy12b2lkIGJyY21mX3VzYl9leGl0KHZvaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0zMDI9c3RhdGljIGludCBicmNtZl91c2JfdHhfY3RscGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1ZiwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjMxNTpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgIT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzE2LVx0XHRlcnIgPSAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0zNDc9c3RhdGljIGludCBicmNtZl91c2JfcnhfY3RscGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1ZiwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjM2MDpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgIT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzYxLVx0XHRlcnIgPSAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01MDc9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjUyNTpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTI2Olx0ICAgIGRldmluZm8tXHUwMDNlYnVzX3B1Yi5zdGF0ZSA9PSBCUkNNRk1BQ19VU0JfU1RBVEVfU0xFRVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01MjctXHRcdHNrYl9wdXQoc2tiLCB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTU3MT1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfZmlsbF9hbGwoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTc1Olx0aWYgKGRldmluZm8tXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzYtXHRcdGJyY21mX2VycihcJiMzNDtidXMgaXMgbm90IHVwPSVkXFxuXCYjMzQ7LCBkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01ODQ9YnJjbWZfdXNiX3N0YXRlX2NoYW5nZShzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sIGludCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk2LVx0LyogdXBkYXRlIHN0YXRlIG9mIHVwcGVyIGxheWVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTk3Olx0aWYgKHN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk4LVx0XHRicmNtZl9kYmcoVVNCLCBcJiMzNDtEQlVTIGlzIGRvd25cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU5OS1cdFx0YnJjbWZfYnVzX2NoYW5nZV9zdGF0ZShiY21mX2J1cywgQlJDTUZfQlVTX0RPV04pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjYwMDpcdH0gZWxzZSBpZiAoc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjAxLVx0XHRicmNtZl9kYmcoVVNCLCBcJiMzNDtEQlVTIGlzIHVwXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjA4PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3R4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjIwLVx0YnJjbWZfZGJnKFVTQiwgXCYjMzQ7RW50ZXIsIHNrYj0lcFxcblwmIzM0Oywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo2MjE6XHRpZiAoZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlICE9IEJSQ01GTUFDX1VTQl9TVEFURV9VUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTYyMi1cdFx0cmV0ID0gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjY1PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3VwKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjY5LVx0YnJjbWZfZGJnKFVTQiwgXCYjMzQ7RW50ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjY3MDpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3MS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3My1cdC8qIFN1Y2Nlc3MsIGluZGljYXRlIGRldmluZm8gaXMgZnVsbHkgdXAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo2NzQ6XHRicmNtZl91c2Jfc3RhdGVfY2hhbmdlKGRldmluZm8sIEJSQ01GTUFDX1VTQl9TVEFURV9VUCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz03MTQ9c3RhdGljIHZvaWQgYnJjbWZfdXNiX2Rvd24oc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NzIyOlx0aWYgKGRldmluZm8tXHUwMDNlYnVzX3B1Yi5zdGF0ZSA9PSBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjMtXHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NzI1Olx0YnJjbWZfdXNiX3N0YXRlX2NoYW5nZShkZXZpbmZvLCBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNzI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz05NzY9c3RhdGljIGludCBicmNtZl91c2JfZGxzdGFydChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sIHU4ICpmdywgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtOTg5LVx0aWYgKGVyciA9PSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MDpcdFx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtOTkxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MjpcdFx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0ZBSUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtOTkzLVx0YnJjbWZfZGJnKFVTQiwgXCYjMzQ7RXhpdCwgZXJyPSVkXFxuXCYjMzQ7LCBlcnIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTAzPXN0cnVjdCBicmNtZl91c2JkZXYgKmJyY21mX3VzYl9hdHRhY2goc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTExLVx0ZGV2aW5mby1cdTAwM2VidXNfcHViLm50eHEgPSBudHhxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjExMTI6XHRkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNDgzPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ4OC1cdGJyY21mX2RiZyhVU0IsIFwmIzM0O0VudGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDg5Olx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX1NMRUVQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0OTAtXHRicmNtZl9jYW5jZWxfYWxsX3VyYnMoZGV2aW5mbyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE0OTg9c3RhdGljIGludCBicmNtZl91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1MDU6XHRkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUwNi1cdGJyY21mX3VzYl9yeF9maWxsX2FsbChkZXZpbmZvKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmgtNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo1OiNpZm5kZWYgQlJDTUZNQUNfVVNCX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo2OiNkZWZpbmUgQlJDTUZNQUNfVVNCX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaC03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oPTg9ZW51bSBicmNtZl91c2Jfc3RhdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjk6XHRCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDoxMDpcdEJSQ01GTUFDX1VTQl9TVEFURV9ETF9GQUlMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjExOlx0QlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTI6XHRCUkNNRk1BQ19VU0JfU1RBVEVfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTM6XHRCUkNNRk1BQ19VU0JfU1RBVEVfU0xFRVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaC0xNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaD0zNT1zdHJ1Y3QgYnJjbWZfdXNicmVxIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmgtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6NDI6I2VuZGlmIC8qIEJSQ01GTUFDX1VTQl9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3MgoJCQkJCQkJb3V0cHV0OiA1OQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCIFN1cHBvcnQgaW4gdGhlIGBicmNtZm1hY2AgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgYnJjbWZtYWNgIGRyaXZlciBhbmQgSSBzZWVtIHRvIHJlY2FsbCBpdCBoYXZpbmcgVVNCIHN1cHBvcnQuIE5vdywgd2hlcmUgd2FzIHRoYXQgcGF0Y2g/IEFoYSwgaXQmIzM5O3MgbWVudGlvbmVkIGluIGBicmNtZm1hYy9jeXcvY29yZS5jYC4gSW50ZXJlc3RpbmcuIFRoZSBuZXh0IHF1ZXN0aW9uIGJ1cm5pbmcgaW4gbXkgbWluZCBpcywgaXMgdGhpcyBVU0IgZnVuY3Rpb25hbGl0eSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgQnJvYWRjb20gY2hpcHNldCwgb3IgaXMgaXQgYSBtb3JlIGdlbmVyYWwgaW1wbGVtZW50YXRpb24gYXBwbGljYWJsZSBhY3Jvc3MgdGhlIGBicmNtZm1hY2AgZmFtaWx5PyBUbyBnZXQgYSBjbGVhciBwaWN0dXJlLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYsIHNvIGxldCYjMzk7cyBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgIGZvciBzb21lIGRldGFpbGVkIGluc2lnaHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yMDA9YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzY6c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MzcwPWNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzMtXHQuYWN0aXZhdGVfZXZlbnRzID0gYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3NDpcdC5nZXRfY2ZnODAyMTFfb3BzID0gYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzUtXHQucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMgPSBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkxOQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGJyY21mX2N5d19vcHMgQXNzaWdubWVudCoqCgpBbHJpZ2h0LCBzbyBgYnJjbWZfY3l3X29wc2AgaXMgZ2V0dGluZyBpbml0aWFsaXplZCB3aXRoIGBicmNtZl9md3ZpZF9vcHNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgbm90IG5lY2Vzc2FyaWx5IHVudXN1YWwuIEl0IHN1Z2dlc3RzIHRoYXQgdGhlIGRyaXZlciYjMzk7cyB1bmRlcmx5aW5nIG9wZXJhdGlvbnMgYXJlIGJlaW5nIG1hbmFnZWQgYnkgdGhlIGZpcm13YXJlIHZpZGVvIGludGVyZmFjZS4gTGV0JiMzOTtzIHNlZSBob3cgYGJyY21mX2N5d19vcHNgIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgc2VlIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIHBvaW50cyBvZiBjb21tb25hbGl0eSBhbmQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBzdHJ1Y3R1cmVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRoZSBmdW5jdGlvbnMgd2l0aGluIGBicmNtZl9jeXdfb3BzYCBhcmUgY2FsbGVkLiBUaGlzIGxpa2VseSBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUgZmlybXdhcmUgaW50ZXJhY3Rpb24gYW5kIHRoZSBkYXRhIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2N5d19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTM1OD1zdGF0aWMgdm9pZCBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozNzA6Y29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzcxLVx0LnNldF9zYWVfcGFzc3dvcmQgPSBicmNtZl9jeXdfc2V0X3NhZV9wd2QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTQtXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE1Olx0XHRcdFx0XHQgICBcdTAwMjZicmNtZl9jeXdfb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcdChcdTAwMjZicmNtZl9jeXdfb3BzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NzcKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJSQ01GX0ZXVkVORE9SX0NZVyBWZW5kb3IqKgoKT2theSwgc28gSSBzZWUgYSBuZXcgdmVuZG9yLCBgQlJDTUZfRldWRU5ET1JfQ1lXYCwgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGludGVyZmFjZSB3aXRoIHRoaXMgcGFydGljdWxhciB2ZW5kb3IgdmlhIFVTQj8mIzM0OyBJdCYjMzk7cyBhIGtleSBxdWVzdGlvbiwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgZGlnIGludG8gdGhlIGBicmNtZm1hY2AgbW9kdWxlIHRvIHNlZSBob3cgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXMgaGFuZGxlZCB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGFuZCB0aGUgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIG1vZGVsIHRvIGFuc3dlciB0aGF0IFVTQiBxdWVzdGlvbiBkZWZpbml0aXZlbHkuIFRoaXMgY291bGQgYmUgYSBuZXcgZGV2aWNlIG9yIGFuIGV2b2x1dGlvbiBvZiBleGlzdGluZyBzdXBwb3J0LiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSQ01GX0ZXVkVORE9SX0NZVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTM0PWVudW0gYnJjbWZfZnd2ZW5kb3Ige1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM1LVx0QlJDTUZfRldWRU5ET1JfV0NDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjM2Olx0QlJDTUZfRldWRU5ET1JfQ1lXLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM3LVx0QlJDTUZfRldWRU5ET1JfQkNBLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTE5NTY9c3RhdGljIHMzMiBicmNtZl9zZXRfd3BhX3ZlcnNpb24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk2OC1cdH0gZWxzZSBpZiAoc21lLVx1MDAzZWNyeXB0by53cGFfdmVyc2lvbnMgXHUwMDI2IE5MODAyMTFfV1BBX1ZFUlNJT05fMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MTk2OTpcdFx0aWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWZ3dmlkID09IEJSQ01GX0ZXVkVORE9SX0NZVyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTE5NzAtXHRcdCAgICBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gPT0gV0xBTl9BS01fU1VJVEVfU0FFKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM9MTI9c3RhdGljIGludCBfX2luaXQgYnJjbWZfY3l3X2luaXQodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNDpcdHJldHVybiBicmNtZl9md3ZpZF9yZWdpc3Rlcl92ZW5kb3IoQlJDTUZfRldWRU5ET1JfQ1lXLCBUSElTX01PRFVMRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTUtXHRcdFx0XHRcdCAgIFx1MDAyNmJyY21mX2N5d19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM9MTg9c3RhdGljIHZvaWQgX19leGl0IGJyY21mX2N5d19leGl0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM6MjA6XHRicmNtZl9md3ZpZF91bnJlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMjEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTctXHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNDE4Olx0XHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfQ1lXLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNDE5LVx0XHQuZndfc2VlZCA9IGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOT1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTM1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjUzNjpcdGNhc2UgQlJDTUZfRldWRU5ET1JfQ1lXOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTM3LVx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExODMKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBWZW5kb3IgRmlybXdhcmUgVXNhZ2UgQWNyb3NzIERyaXZlcnMqKgoKSG1tLCBpbnRlcmVzdGluZy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYEJSQ01GX0ZXVkVORE9SX0NZV2AgZGVmaW5pdGlvbi4gSSBzZWUgaXQgcmVmZXJlbmNlZCB3aXRoaW4gYHBjaWUuY2AsIGFuZCB0aGF0IHRyaWdnZXJzIGEgcXVlc3Rpb246IFdoZXJlIGVsc2UgaXMgdGhpcyB2ZW5kb3IgZmlybXdhcmUgcG90ZW50aWFsbHkgYmVpbmcgdXNlZD8gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGlzIGl0IGFsc28gdXRpbGl6ZWQgaW4gdGhlIFVTQiBkcml2ZXIsIHNwZWNpZmljYWxseSBgdXNiLmNgPyBUaGlzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIGJyb2FkZXIgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhhdCBwYXJ0aWN1bGFyIGZpcm13YXJlLCBhbmQgZW5zdXJpbmcgaXTigJlzIGhhbmRsZWQgY29uc2lzdGVudGx5IGFjcm9zcyBhbGwgcmVsZXZhbnQgZGV2aWNlIGNvbnRleHRzLiBJIG5lZWQgdG8gdHJhY2sgdGhpcyBkb3duIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfRldWRU5ET1JfQ1lXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MjEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqRGlnZ2luZyBpbnRvIGBmd3ZpZGAgaW4gYHVzYi5jYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBmd3ZpZGAgdmFyaWFibGUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIG1vZGlmaWVkIHdpdGhpbiB0aGUgYHVzYi5jYCBmaWxlLiBUaGlzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZy91bmRlcnN0YW5kaW5nIHNvbWUgcmVjZW50IGJlaGF2aW9yIEkmIzM5O3ZlIG9ic2VydmVkLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSByZWZlcmVuY2VzLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbHMgb3IgYXNzaWdubWVudHMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyBpdHMgdmFsdWUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGB1c2IuY2AgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGFueSBleHRlcm5hbCBzb3VyY2VzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbWV0aG9kaWNhbGx5IHNlYXJjaGluZyBmb3IgaW5zdGFuY2VzIG9mIGBmd3ZpZGAgYW5kIHNlZSB3aGF0IHRoZSBjb2RlIGFyb3VuZCBpdCB0ZWxscyB1cy4gVGhpcyBtaWdodCBsZWFkIG1lIGRvd24gYSByYWJiaXQgaG9sZSwgYnV0IGhvcGVmdWxseSwgSSBjYW4gcmVjb25zdHJ1Y3QgdGhlIGxvZ2ljYWwgZmxvdyByZWxhdGVkIHRvIHRoaXMgcGFyYW1ldGVyIGFuZCBpdHMgc2lnbmlmaWNhbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmd3ZpZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI0NTpcdFx0XHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVx0YnVzLVx1MDAzZXByb3RvX3R5cGUgPSBCUkNNRl9QUk9UT19CQ0RDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XHRidXMtXHUwMDNlZnd2aWQgPSBmd3ZpZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjcxLVx0YnVzLVx1MDAzZWFsd2F5c191c2VfZndzX3F1ZXVlID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTQKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBgYnJjbWZfdXNiX3Byb2JlX2NiYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgYGJyY21mX3VzYl9wcm9iZV9jYmAuIEkmIzM5O20gc3RhcnRpbmcgYnkgdHJhY2luZyBiYWNrIHRoZSBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCB3aGljaCBpcyB1c3VhbGx5IHRoZSBiZXN0IGFwcHJvYWNoIHdoZW4gZGVhbGluZyB3aXRoIGEgZGV2aWNlIGRyaXZlciYjMzk7cyBwcm9iZSBjYWxsYmFjay4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtJiMzOTtzIGNvcmUgcHJvYmUgbWVjaGFuaXNtcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyByZWdpc3RlcmVkIG9yIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byBVU0ItcmVsYXRlZCBzdHJ1Y3R1cmVzIG9yIGZ1bmN0aW9ucy4KCkkmIzM5O20gbWVudGFsbHkgbWFwcGluZyB0aGUgVVNCIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoaW5raW5nIHRocm91Z2ggdGhlIGB1c2JfZHJpdmVyYCBzdHJ1Y3R1cmUgYW5kIGl0cyBtZW1iZXJzLCBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGBicmNtZl91c2JfcHJvYmVfY2JgIHJlZmVyZW5jZWQgdGhlcmUsIG9yIHBlcmhhcHMgd2l0aGluIGEgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBCcm9hZGNvbSBkZXZpY2UuIEkgYW50aWNpcGF0ZSB0aGlzIHdpbGwgaW52b2x2ZSB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBVU0IgY29yZSwgdGhlIGRldmljZSYjMzk7cyBkZXNjcmlwdG9ycywgYW5kIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSBwYXRoIHRoYXQgbGVhZHMgZnJvbSBhIGRldmljZSBpbnNlcnRpb24gb3IgZW51bWVyYXRpb24gZXZlbnQgdG8gdGhpcyBzcGVjaWZpYyBjYWxsYmFjayBiZWluZyBpbnZva2VkLiBJJiMzOTtsbCBiZSB0aGlua2luZyBhYm91dCBob3cgZGV2aWNlIElEcyBhcmUgbWF0Y2hlZCwgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYXJkd2FyZS4KCkkmIzM5O20gbWVudGFsbHkgcHJlcGFyaW5nIGZvciBwb3RlbnRpYWwgY29tcGxpY2F0aW9ucy4gVGhlIGNhbGwgY2hhaW4gY291bGQgYmUgaW5kaXJlY3QsIGludm9sdmluZyBtdWx0aXBsZSBsYXllcnMgb2YgYWJzdHJhY3Rpb24uIEkmIzM5O2xsIHdhdGNoIG91dCBmb3IgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBhIGhvdHBsdWcgc2NlbmFyaW8uIEFsc28sIEkmIzM5O2xsIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFVTQiBjb3JlIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9mIHRoZSBCcm9hZGNvbSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IHRoZXNlIGRldmljZXMgY2FuIGJlIHRyaWNreSBhbmQgbWF5IHJlcXVpcmUgY3VzdG9tIHByb2Jpbmcgc2VxdWVuY2VzLCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aG9zZSB0b28uIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBVU0IgZGV2aWNlLCBwYXJ0aWN1bGFybHkgdGhlIGRldmljZSwgaW50ZXJmYWNlIGFuZCBlbmRwb2ludCBzdHJ1Y3R1cmVzLCBhbmQgdGhlbiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdG8gdHJhY2sgdGhlIGNhbGwgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3Byb2JlX2NiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDUtXHRcdFx0ICAgICAgZW51bSBicmNtZl9md3ZlbmRvciBmd3ZpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0Mj1icmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDQzOlx0cmV0ID0gYnJjbWZfdXNiX3Byb2JlX2NiKGRldmluZm8sIGlkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQ0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MTgKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBVU0IgZHJpdmVyIGRldmVsb3BtZW50OgoKKipBbmFseXppbmcgdGhlIERhdGEgRmxvdzogYGlkLSZndDtkcml2ZXJfaW5mb2AgYW5kIGBmd3ZpZGAqKgoKUmlnaHQsIHNvIGBpZC0mZ3Q7ZHJpdmVyX2luZm9gIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQsIHNwZWNpZmljYWxseSBhcyBgZnd2aWRgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBmd3ZpZGAgdmFsdWUgaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGB1c2IuY2AgZmlsZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZGF0YSBhbmQgc2VlIHdoYXQgdGhlIGRyaXZlciBpcyBkb2luZyB3aXRoIHRob3NlIHNwZWNpZmljIGBkcml2ZXJfaW5mb2AgdmFsdWVzLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBhdCBsZWFzdCBpbml0aWFsaXphdGlvbiBzdGVwcywgZm9yIHRoZSBkZXZpY2UgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBtZWFuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRl9GV1ZFTkRPUl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTE9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTMzLVx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTM0Olx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM5LVx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9MSU5LU1lTLCBkZXZfaWQpLCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NDA6XHRcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NDUtXHRcdFVTQl9ERVZJQ0UoQ1lfVVNCX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NDY6XHRcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NDctXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTM5CgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIFRoaXMgYEJSQ01GX0ZXVkVORE9SX1dDQ2Ag4oCTIGhvbGQgb24sIGlzIHRoaXMgYWN0dWFsbHkgdXNlZCBhY3Jvc3MgKmFsbCogVVNCIGRldmljZXM/IFRoYXQgY2FuJiMzOTt0IGJlIHJpZ2h0LiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24uCgoqKkludmVzdGlnYXRpbmcgVVNCIERldmljZSBGaXJtd2FyZSBMb2FkaW5nKioKCkkgbmVlZCB0byBjb25maXJtIHRoaXMgcXVpY2tseS4gTXkgaW5zdGluY3RzIHRlbGwgbWUgc29tZXRoaW5nIGlzIGFtaXNzIGhlcmUuIExldCBtZSBjaGVjayB0aGUgc291cmNlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AuIFNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMTUzMyBzaG91bGQgcHJvdmlkZSBzb21lIGluc2lnaHQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgc2VjdGlvbiB0byBzZWUgaG93IGBCUkNNRl9GV1ZFTkRPUl9XQ0NgIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCB0byBzZWUgaWYgbXkgaW5pdGlhbCBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LiBUaGlzIHNlZW1zIGxpa2UgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZSBhbmQgSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciB2YXJpYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1MzA6XHRcbjE1MzE6XHQjZGVmaW5lIEJSQ01GX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxuMTUzMjpcdFx0eyBcXFxuMTUzMzpcdFx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcbjE1MzQ6XHRcdFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXG4xNTM1Olx0XHR9XG4xNTM2Olx0XG4xNTM3Olx0I2RlZmluZSBMSU5LU1lTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxuMTUzODpcdFx0eyBcXFxuMTUzOTpcdFx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9MSU5LU1lTLCBkZXZfaWQpLCBcXFxuMTU0MDpcdFx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcbjE1NDE6XHRcdH1cbjE1NDI6XHRcbjE1NDM6XHQjZGVmaW5lIENZUFJFU1NfVVNCX0RFVklDRShkZXZfaWQpIFxcXG4xNTQ0Olx0XHR7IFxcXG4xNTQ1Olx0XHRcdFVTQl9ERVZJQ0UoQ1lfVVNCX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxuMTU0NjpcdFx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcbjE1NDc6XHRcdH1cbjE1NDg6XHRcbjE1NDk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYnJjbWZfdXNiX2RldmlkX3RhYmxlW10gPSB7XG4xNTUwOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzMTQzX0RFVklDRV9JRCksXG4xNTUxOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM2X0RFVklDRV9JRCksXG4xNTUyOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjQyX0RFVklDRV9JRCksXG4xNTUzOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzNTY5X0RFVklDRV9JRCksXG4xNTU0Olx0XHRMSU5LU1lTX1VTQl9ERVZJQ0UoQlJDTV9VU0JfNDMyMzVfTElOS1NZU19ERVZJQ0VfSUQpLFxuMTU1NTpcdFx0Q1lQUkVTU19VU0JfREVWSUNFKENZX1VTQl80MzczX0RFVklDRV9JRCksXG4xNTU2Olx0XHR7IFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xHLCBCUkNNX1VTQl80MzI0Ml9MR19ERVZJQ0VfSUQpIH0sXG4xNTU3Olx0XHQvKiBzcGVjaWFsIGVudHJ5IGZvciBkZXZpY2Ugd2l0aCBmaXJtd2FyZSBsb2FkZWQgYW5kIHJ1bm5pbmcgKi9cbjE1NTg6XHRcdEJSQ01GX1VTQl9ERVZJQ0UoQlJDTV9VU0JfQkNNRldfREVWSUNFX0lEKSxcbjE1NTk6XHRcdENZUFJFU1NfVVNCX0RFVklDRShCUkNNX1VTQl9CQ01GV19ERVZJQ0VfSUQpLFxuMTU2MDpcdFx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxuMTU2MTpcdH07XG4xNTYyOlx0XG4xNTYzOlx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGJyY21mX3VzYl9kZXZpZF90YWJsZSk7XG4xNTY0Olx0XG4xNTY1Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGJyY21mX3VzYmRydnIgPSB7XG4xNTY2Olx0XHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuMTU2NzpcdFx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxuMTU2ODpcdFx0LmRpc2Nvbm5lY3QgPSBicmNtZl91c2JfZGlzY29ubmVjdCxcbjE1Njk6XHRcdC5pZF90YWJsZSA9IGJyY21mX3VzYl9kZXZpZF90YWJsZSxcbjE1NzA6XHRcdC5zdXNwZW5kID0gYnJjbWZfdXNiX3N1c3BlbmQsXG4xNTcxOlx0XHQucmVzdW1lID0gYnJjbWZfdXNiX3Jlc3VtZSxcbjE1NzI6XHRcdC5yZXNldF9yZXN1bWUgPSBicmNtZl91c2JfcmVzZXRfcmVzdW1lLFxuMTU3MzpcdFx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbjE1NzQ6XHRcdC5kaXNhYmxlX2h1Yl9pbml0aWF0ZWRfbHBtID0gMSxcbjE1NzU6XHR9O1xuMTU3NjpcdFxuMTU3NzpcdHN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKm5vdHVzZWQpXG4xNTc4Olx0e1xuMTU3OTpcdFx0LyogZGV2aWNlIHBhc3QgaXMgdGhlIHVzYiBpbnRlcmZhY2Ugc28gd2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3OTYKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBCUkNNRiBGaXJtd2FyZSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBCUkNNRl9GV1ZFTkRPUl9DWVdgIGlzbiYjMzk7dCBhY3R1YWxseSBsZXZlcmFnZWQgd2l0aGluIHRoZSBgdXNiLmNgIGRyaXZlciBjb2RlLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGltZSB0byBzaGlmdCBmb2N1cyBhbmQgc2VlIGlmIGl0JiMzOTtzIGJlaW5nIHV0aWxpemVkIGVsc2V3aGVyZS4gTGV0JiMzOTtzIHBpdm90IG91ciBhdHRlbnRpb24gb3ZlciB0byBgc2Rpby5jYC4gSG9wZWZ1bGx5LCB0aGUgYW5zd2VyIGxpZXMgd2l0aGluIHRoYXQgZmlsZS4gSSBoYXZlIGEgZmVlbGluZyB0aGUgZmlybXdhcmUgdmVuZG9yIHNlbGVjdGlvbiBpcyBsaWtlbHkgaGFuZGxlZCB0aGVyZSwgY29uc2lkZXJpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIGNvbW1vbiB1c2UtY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRl9GV1ZFTkRPUl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMjMKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBrbm93aW5nIGZ1bGwgd2VsbCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3I6CgoqKkJDTVNESC5DOiBJbml0aWFsIFNjYW4qKgoKQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgdG8gb3BlbiBhbmQgZXhhbWluZSBgYmNtc2RoLmNgLiBJIG5lZWQgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoaXMgZmlsZSBxdWlja2x5LiBHaXZlbiB0aGUgbmFtZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSByZWxhdGVkIHRvIHRoZSBCcm9hZGNvbSBTREggaW50ZXJmYWNlIG9yIGFzc29jaWF0ZWQgZHJpdmVycy4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBhc3N1bXB0aW9uLCBhbnl3YXkuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKTXkgaW5pdGlhbCBzY2FuIHdpbGwgaW52b2x2ZToKCiogICAqKkhlYWRlciBpbmNsdXNpb25zKio6IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlcywgb2J2aW91c2x5LCBidXQgYWxzbyBzcGVjaWZpYyBvbmVzIHRoYXQgaGludCBhdCB0aGUgaGFyZHdhcmUgb3IgbGlicmFyaWVzIGl0IGludGVyYWN0cyB3aXRoIChlLmcuIEJyb2FkY29tIFNESyBoZWFkZXJzLCBzcGVjaWZpYyBTREggY2hpcHNldHMsIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcykuIFRoZXNlIGluY2x1c2lvbnMgZ2l2ZSBtZSBjb250ZXh0LgoqICAgKipHbG9iYWwgdmFyaWFibGVzIGFuZCBzdHJ1Y3R1cmVzKio6IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGFuZCB1c2VkIGhlcmU/IEFueSBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlcyBvciBidWZmZXJzPyBUaGVzZSB3aWxsIHByb3ZpZGUgaGludHMgYWJvdXQgaG93IHRoZSBtb2R1bGUgbWFuYWdlcyB0aGUgU0RIIGludGVyZmFjZS4gSSYjMzk7bSBzY2FubmluZyBmb3IgJiMzNDtpbnRlcmVzdGluZyYjMzQ7IG5hbWVzIHRvbzogYW55IG9idmlvdXMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBlcnJvciBjb2Rlcywgc3RhdGVzLCBldGMuIHRoYXQgZ2l2ZSBtZSBhIGNsZWFyZXIgaWRlYSBvZiB0aGUgbW9kdWxlJiMzOTtzIGZ1bmN0aW9uLgoqICAgKipGdW5jdGlvbiBwcm90b3R5cGVzKio6IEEgcXVpY2sgcmVhZCBvZiB0aGUgcHJvdG90eXBlcyB0ZWxscyBtZSB3aGljaCBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuIFRoaXMgZ2l2ZXMgYSBmaXJzdCBndWVzcyBhcyB0byB0aGUgbW9kdWxlJiMzOTtzIGludGVuZGVkIHJvbGUuIEFyZSB0aGVzZSBpbml0aWFsaXphdGlvbiwgZGF0YSB0cmFuc2ZlciwgY29udHJvbCBvciBlcnJvciBoYW5kbGluZyBmdW5jdGlvbnM/CiogICAqKktleSBmdW5jdGlvbnMqKjogSWYgdGhlIHByZXZpb3VzIHN0ZXAgZGlkbiYjMzk7dCBnaXZlIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoZSBmaWxlIGRvZXMsIG9yIGlmIGEgc3BlY2lmaWMgZnVuY3Rpb24gbmFtZSBjYXRjaGVzIG15IGV5ZSwgSSYjMzk7bGwgZ28gc3RyYWlnaHQgdG8gaXRzIGRlZmluaXRpb24gYW5kIHVuZGVyc3RhbmQgaG93IGl0IHdvcmtzIGFuZCB3aGF0IGl0IGRvZXMuCgpJJiMzOTttIGFpbWluZyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhpcyBmaWxlJiMzOTtzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIHRvIHRoZSBzcGVjaWZpYyBTREgtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IHRoaXMgY29kZSBwcm92aWRlcy4gU28sIGxldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfRldWRU5ET1JfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYz05MDA9aW50IGJyY21mX3NkaW9kX3Byb2JlKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtOTY4LVx0XHRTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo5Njk6XHRcdC5kcml2ZXJfZGF0YSA9IEJSQ01GX0ZXVkVORE9SXyAjIyBmd192ZW5kIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtOTcwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NzQtXHRcdFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX0NZUFJFU1MsIGRldl9pZCksIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6OTc1Olx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9GV1ZFTkRPUl8gIyMgZndfdmVuZCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTk3Ni1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4NTQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ29kZTogUGlucG9pbnRpbmcgdGhlIEFyZWEgb2YgSW50ZXJlc3QqKgoKT2theSwgc28gSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZy4gQmFzZWQgb24gdGhlIGNvbnRleHQgKHdoaWNoIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBsYWNrIG9mIHNwZWNpZmljIGRldGFpbHMgaW4gdGhlIHByb21wdCEpLCBpdCBzb3VuZHMgbGlrZSB0aGVyZSYjMzk7cyBhbiBpc3N1ZSBvciBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBteSBhdHRlbnRpb24gd2l0aGluIHRoZSBgYmNtc2RoLmNgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgbWVudGFsIG1vZGVsIG9mIHdoZXJlIHBvdGVudGlhbCBwcm9ibGVtcyBvciByZWxldmFudCBmdW5jdGlvbmFsaXR5IG1pZ2h0IHJlc2lkZSB3aXRoaW4gdGhhdCBtb2R1bGUuIE15IGluaXRpYWwgc3RyYXRlZ3kgaXMgdG8gemVybyBpbiBvbiBsaW5lIDk2OC4gVGhhdCBzcGVjaWZpYyBsaW5lIG51bWJlciBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCB0aGF0IGFyZWEgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIHVuZGVyc3RhbmQgaXRzIGltbWVkaWF0ZSBjb250ZXh0LiBIb3BlZnVsbHksIGxpbmUgOTY4IGlzIGluIGEgZnVuY3Rpb24sIGxvb3AsIG9yIGJsb2NrIHRoYXQgcmVsYXRlcyB0byB0aGUgcHJvYmxlbSBhdCBoYW5kLCBvciB0aGF0IHdpbGwgcHJvdmlkZSBtZSB3aXRoIGNsdWVzIGFzIHRvIHdoZXJlIGl0IGlzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb21tZW50cywgdmFyaWFibGUgbmFtZXMsIGFuZCBjb250cm9sIGZsb3cgdGhhdCBwcm92aWRlIGNsdWVzLiBJZiBsaW5lIDk2OCBpdHNlbGYgZG9lc24mIzM5O3QgeWllbGQgaW1tZWRpYXRlIGFuc3dlcnMsIEkmIzM5O2xsIGJlIHByZXBhcmVkIHRvIGV4cGFuZCBteSBzZWFyY2ggd2l0aGluIHRoZSBzdXJyb3VuZGluZyBibG9ja3Mgb2YgY29kZSBhYm92ZSBhbmQgYmVsb3cgdGhhdCBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTYwOlx0XHRpZiAocmV0KVxuIDk2MTpcdFx0XHRicmNtZl9zZGlvZF9yZW1vdmUoc2Rpb2Rldik7XG4gOTYyOlx0XG4gOTYzOlx0XHRyZXR1cm4gcmV0O1xuIDk2NDpcdH1cbiA5NjU6XHRcbiA5NjY6XHQjZGVmaW5lIEJSQ01GX1NESU9fREVWSUNFKGRldl9pZCwgZndfdmVuZCkgXFxcbiA5Njc6XHRcdHsgXFxcbiA5Njg6XHRcdFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQlJPQURDT00sIGRldl9pZCksIFxcXG4gOTY5Olx0XHRcdC5kcml2ZXJfZGF0YSA9IEJSQ01GX0ZXVkVORE9SXyAjIyBmd192ZW5kIFxcXG4gOTcwOlx0XHR9XG4gOTcxOlx0XG4gOTcyOlx0I2RlZmluZSBDWVdfU0RJT19ERVZJQ0UoZGV2X2lkLCBmd192ZW5kKSBcXFxuIDk3MzpcdFx0eyBcXFxuIDk3NDpcdFx0XHRTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxuIDk3NTpcdFx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9GV1ZFTkRPUl8gIyMgZndfdmVuZCBcXFxuIDk3NjpcdFx0fVxuIDk3NzpcdFxuIDk3ODpcdC8qIGRldmljZXMgd2Ugc3VwcG9ydCwgbnVsbCB0ZXJtaW5hdGVkICovXG4gOTc5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBicmNtZl9zZG1tY19pZHNbXSA9IHtcbiA5ODA6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMTQzLCBXQ0MpLFxuIDk4MTpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMyNDEsIFdDQyksXG4gOTgyOlx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzI5LCBXQ0MpLFxuIDk4MzpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzMCwgV0NDKSxcbiA5ODQ6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQsIFdDQyksXG4gOTg1Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM0MCwgV0NDKSxcbiA5ODY6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQxLCBXQ0MpLFxuIDk4NzpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzNjIsIFdDQyksXG4gOTg4Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM2NCwgV0NDKSxcbiA5ODk6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzVfNDMzOSwgV0NDKSxcbiA5OTA6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzksIFdDQyksXG4gOTkxOlx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzQzMCwgV0NDKSxcbiA5OTI6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDM5LCBXQ0MpLFxuIDk5MzpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM0NSwgV0NDKSxcbiA5OTQ6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDU1LCBXQ0MpLFxuIDk5NTpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM1NCwgV0NDKSxcbiA5OTY6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNTYsIFdDQyksXG4gOTk3Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzU5LCBXQ0MpLFxuIDk5ODpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM3NTEsIFdDQyksXG4gOTk5Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80Mzc1MiwgV0NDKSxcbjEwMDA6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM3MywgQ1lXKSxcbjEwMDE6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDMwMTIsIENZVyksXG4xMDAyOlx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV9DWVBSRVNTXzg5MzU5LCBDWVcpLFxuMTAwMzpcdFx0Q1lXX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM0MzksIENZVyksXG4xMDA0Olx0XHR7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9XG4xMDA1Olx0fTtcbjEwMDY6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIGJyY21mX3NkbW1jX2lkcyk7XG4xMDA3Olx0XG4xMDA4Olx0XG4xMDA5Olx0c3RhdGljIHZvaWQgYnJjbWZfc2Rpb2RfYWNwaV9zYXZlX3Bvd2VyX21hbmFnZWFibGUoc3RydWN0IGJyY21mX3NkaW9fZGV2ICpzZGlvZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ3MAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTRElPIEZ1enppbmcgRXhwbG9yYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYEJSQ01GX1NESU9fREVWSUNFYCB0aGluZywgc3BlY2lmaWNhbGx5IHRoZSBvbmUgdXNpbmcgYENZV2AuIFJpZ2h0LCBgQ1lXYCBpcyBiZWluZyByZWFjaGVkIHRocm91Z2ggU0RJTy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHRoaXMuIENhbiB3ZSBmdXp6IFNESU8/IEkmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBhbGwgYW5nbGVzIGhlcmUuIEkga25vdyBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGEgKmdlbmVyaWMqIFNESU8gZnV6emVyLiBIb2xkIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrLi4uIG5vLCBkZWZpbml0ZWx5IG5vIGJ1aWx0LWluLCBnZW5lcmljIFNESU8gZnV6emluZyBpbiBTeXprYWxsZXIuIEhtbS4gV2FpdCBhIG1pbnV0ZeKApiBXaGF0IGFib3V0IHRoZSBgcGNpZS5jYCBmdXp6aW5nIG1vZHVsZXM/IENvdWxkIHRoZXJlIGJlIGFuIGFwcHJvYWNoIHRvIGJ1aWxkIGZyb20gdGhhdD8gSSBuZWVkIHRvIGV4cGxvcmUgdGhpcyByb3V0ZSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0MTA6XHRcdEJSQ01GX0RSVkRBVEFfQ1lXLFxuMjQxMTpcdFx0QlJDTUZfRFJWREFUQV9CQ0EsXG4yNDEyOlx0XHRCUkNNRl9EUlZEQVRBX1dDQyxcbjI0MTM6XHRcdEJSQ01GX0RSVkRBVEFfV0NDX1NFRUQsXG4yNDE0Olx0fTtcbjI0MTU6XHRcbjI0MTY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7XG4yNDE3Olx0XHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xuMjQxODpcdFx0XHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfQ1lXLFxuMjQxOTpcdFx0XHQuZndfc2VlZCA9IGZhbHNlLFxuMjQyMDpcdFx0fSxcbjI0MjE6XHRcdFtCUkNNRl9EUlZEQVRBX0JDQV0gPSB7XG4yNDIyOlx0XHRcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9CQ0EsXG4yNDIzOlx0XHRcdC5md19zZWVkID0gZmFsc2UsXG4yNDI0Olx0XHR9LFxuMjQyNTpcdFx0W0JSQ01GX0RSVkRBVEFfV0NDXSA9IHtcbjI0MjY6XHRcdFx0LnZlbmRvciA9IEJSQ01GX0ZXVkVORE9SX1dDQyxcbjI0Mjc6XHRcdFx0LmZ3X3NlZWQgPSBmYWxzZSxcbjI0Mjg6XHRcdH0sXG4yNDI5Olx0XHRbQlJDTUZfRFJWREFUQV9XQ0NfU0VFRF0gPSB7XG4yNDMwOlx0XHRcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9XQ0MsXG4yNDMxOlx0XHRcdC5md19zZWVkID0gdHJ1ZSxcbjI0MzI6XHRcdH0sXG4yNDMzOlx0fTtcbjI0MzQ6XHRcbjI0MzU6XHQvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBwY2lfbWF0Y2hfaWQoKSBjYWxsICovXG4yNDM2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGJyY21mX3BjaWVfZGV2aWRfdGFibGVbXTtcbjI0Mzc6XHRcbjI0Mzg6XHRzdGF0aWMgaW50XG4yNDM5Olx0YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuMjQ0MDpcdHtcbjI0NDE6XHRcdGludCByZXQ7XG4yNDQyOlx0XHRzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXE7XG4yNDQzOlx0XHRzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvO1xuMjQ0NDpcdFx0c3RydWN0IGJyY21mX3BjaWVkZXYgKnBjaWVfYnVzX2RldjtcbjI0NDU6XHRcdHN0cnVjdCBicmNtZl9jb3JlICpjb3JlO1xuMjQ0NjpcdFx0c3RydWN0IGJyY21mX2J1cyAqYnVzO1xuMjQ0NzpcdFxuMjQ0ODpcdFx0aWYgKCFpZCkge1xuMjQ0OTpcdFx0XHRpZCA9IHBjaV9tYXRjaF9pZChicmNtZl9wY2llX2RldmlkX3RhYmxlLCBwZGV2KTtcbjI0NTA6XHRcdFx0aWYgKCFpZCkge1xuMjQ1MTpcdFx0XHRcdHBjaV9lcnIocGRldiwgXCYjMzQ7RXJyb3IgY291bGQgbm90IGZpbmQgcGNpX2RldmljZV9pZCBmb3IgJXg6JXhcXG5cJiMzNDssIHBkZXYtXHUwMDNldmVuZG9yLCBwZGV2LVx1MDAzZWRldmljZSk7XG4yNDUyOlx0XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4yNDUzOlx0XHRcdH1cbjI0NTQ6XHRcdH1cbjI0NTU6XHRcbjI0NTY6XHRcdGJyY21mX2RiZyhQQ0lFLCBcJiMzNDtFbnRlciAleDoleFxcblwmIzM0OywgcGRldi1cdTAwM2V2ZW5kb3IsIHBkZXYtXHUwMDNlZGV2aWNlKTtcbjI0NTc6XHRcbjI0NTg6XHRcdHJldCA9IC1FTk9NRU07XG4yNDU5Olx0XHRkZXZpbmZvID0ga3phbGxvY19vYmooKmRldmluZm8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYxNQoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIGBicmNtZl9wY2llX2RldmlkX3RhYmxlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYGJyY21mX3BjaWVfZGV2aWRfdGFibGVg4oCmIGltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyB0byBjaHVybiBvbiB3aGF0IHRoaXMgbGlrZWx5IHJlcHJlc2VudHMuIEJhc2VkIG9uIHRoZSBuYW1lLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGEgdGFibGUsIHdoaWNoIG1lYW5zIGEgc3RydWN0dXJlZCBkYXRhIHNldC4gVGhlIGBicmNtZmAgcGFydCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyByZWxhdGVkIHRvIEJyb2FkY29tIFdpLUZpIGRyaXZlcnMsIGFuZCBgcGNpZWAgb2YgY291cnNlLCBpbmRpY2F0ZXMgaXQgY29uY2VybnMgdGhlIFBDSSBFeHByZXNzIGludGVyZmFjZS4gVGhlIGBkZXZpZGAgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgbGlzdCBvZiBkZXZpY2UgSURzLgoKTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyB0YWJsZSBpcyB0aGUgY29yZSBvZiBob3cgdGhlIGRyaXZlciBpZGVudGlmaWVzIGFuZCBzdXBwb3J0cyBkaWZmZXJlbnQgQnJvYWRjb20gUENJZSBXaS1GaSBkZXZpY2VzLiBJdCYjMzk7cyBwcm9iYWJseSB0aGUgY3J1Y2lhbCBsb29rdXAgbWVjaGFuaXNtLiBXaXRob3V0IGl0LCB0aGUgZHJpdmVyIHdvdWxkbiYjMzk7dCBrbm93IGhvdyB0byBpbnRlcmZhY2Ugd2l0aCBzcGVjaWZpYyBoYXJkd2FyZS4gSSYjMzk7bSBpbWFnaW5pbmcgcm93cyBvciBlbnRyaWVzLCBlYWNoIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIGRldmljZSwgcGVyaGFwcyB3aXRoIHZlbmRvciBhbmQgZGV2aWNlIElEcyBhcyB0aGUga2V5cy4KCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgd2hhdCBvdGhlciBmaWVsZHMgbWlnaHQgYmUgaW4gZWFjaCBlbnRyeS4gQmV5b25kIHRoZSBkZXZpY2UgSUQsIHRoZXJlJiMzOTtzIGxpa2VseSB0byBiZSBpbmZvcm1hdGlvbiB0byBkZXNjcmliZSB0aGUgZGV2aWNlJiMzOTtzIGNhcGFiaWxpdGllcywgc3BlY2lmaWMgZHJpdmVyIGxvYWRpbmcgaW5zdHJ1Y3Rpb25zLCBvciBtYXliZSBldmVuIGZpcm13YXJlIGluZm9ybWF0aW9uLiBDb3VsZCBpdCBkaWN0YXRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBwb3dlciBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMsIG9yIGV2ZW4gd2hpY2ggZmlybXdhcmUgZmlsZSB0byBsb2FkIGZvciBhIGdpdmVuIGRldmljZT8gRGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHRoZXJlIG1pZ2h0IGV2ZW4gYmUgcG9pbnRlciB0byBkYXRhIHN0cnVjdHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMgc3BlY2lmaWMgdG8gZWFjaCBkZXZpY2UuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBkcml2ZXIgYW5kIHRoZSBzcGVjaWZpYyBoYXJkd2FyZS4KCkkmIzM5O20gbm93IHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIHRhYmxlIHdvdWxkIGJlIG9yZ2FuaXplZCB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb2RlOiBJcyBpdCBhIHN0YXRpYyBhcnJheSBjb21waWxlZCBpbnRvIHRoZSBkcml2ZXIsIG9yIGlzIGl0IGxvYWRlZCBkeW5hbWljYWxseT8gSG93IGlzIGl0IGFjY2Vzc2VkPyBJcyBpdCBvcHRpbWl6ZWQgZm9yIGZhc3QgbG9va3VwcywgcGVyaGFwcyB1c2luZyBhIGhhc2ggdGFibGUgb3IgYSBiaW5hcnkgc2VhcmNoIGlmIHRoZSBkZXZpY2UgSURzIGFyZSBzb3J0ZWQ/IEFsc28sIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHRhYmxlJiMzOTtzIHNpemU/IERvZXMgaXQgc2NhbGUgd2VsbCB0byBuZXcgQnJvYWRjb20gZGV2aWNlcywgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgcmVndWxhcmx5IHVwZGF0ZWQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY4MDpcdFx0XHRicmNtZl9wY2llX2Z3Y29uX3RpbWVyKGRldmluZm8sIHRydWUpO1xuMjY4MTpcdFx0XHRyZXR1cm4gMDtcbjI2ODI6XHRcdH1cbjI2ODM6XHRcbjI2ODQ6XHRjbGVhbnVwOlxuMjY4NTpcdFx0YnJjbWZfY2hpcF9kZXRhY2goZGV2aW5mby1cdTAwM2VjaSk7XG4yNjg2Olx0XHRkZXZpbmZvLVx1MDAzZWNpID0gTlVMTDtcbjI2ODc6XHRcdHBkZXYgPSBkZXZpbmZvLVx1MDAzZXBkZXY7XG4yNjg4Olx0XHRicmNtZl9wY2llX3JlbW92ZShwZGV2KTtcbjI2ODk6XHRcbjI2OTA6XHRcdGVyciA9IGJyY21mX3BjaWVfcHJvYmUocGRldiwgTlVMTCk7XG4yNjkxOlx0XHRpZiAoZXJyKVxuMjY5MjpcdFx0XHRfX2JyY21mX2VycihOVUxMLCBfX2Z1bmNfXywgXCYjMzQ7cHJvYmUgYWZ0ZXIgcmVzdW1lIGZhaWxlZCwgZXJyPSVkXFxuXCYjMzQ7LCBlcnIpO1xuMjY5MzpcdFxuMjY5NDpcdFx0cmV0dXJuIGVycjtcbjI2OTU6XHR9XG4yNjk2Olx0XG4yNjk3Olx0XG4yNjk4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtID0ge1xuMjY5OTpcdFx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxuMjcwMDpcdFx0LnJlc3VtZSA9IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMsXG4yNzAxOlx0XHQuZnJlZXplID0gYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyxcbjI3MDI6XHRcdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcbjI3MDM6XHR9O1xuMjcwNDpcdFxuMjcwNTpcdFxuMjcwNjpcdCNlbmRpZiAvKiBDT05GSUdfUE0gKi9cbjI3MDc6XHRcbjI3MDg6XHRcbjI3MDk6XHQjZGVmaW5lIEJSQ01GX1BDSUVfREVWSUNFKGRldl9pZCwgZndfdmVuZCkgXFxcbjI3MTA6XHRcdHsgXFxcbjI3MTE6XHRcdFx0UENJX0RFVklDRShCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAoZGV2X2lkKSksIFxcXG4yNzEyOlx0XHRcdC5jbGFzcyA9IFBDSV9DTEFTU19ORVRXT1JLX09USEVSIFx1MDAzY1x1MDAzYyA4LCBcXFxuMjcxMzpcdFx0XHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxuMjcxNDpcdFx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxuMjcxNTpcdFx0fVxuMjcxNjpcdCNkZWZpbmUgQlJDTUZfUENJRV9ERVZJQ0VfU1VCKGRldl9pZCwgc3VidmVuZCwgc3ViZGV2LCBmd192ZW5kKSBcXFxuMjcxNzpcdFx0eyBcXFxuMjcxODpcdFx0XHRQQ0lfREVWSUNFX1NVQihCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAoZGV2X2lkKSwgXFxcbjI3MTk6XHRcdFx0XHQgICAgICAgKHN1YnZlbmQpLCAoc3ViZGV2KSksIFxcXG4yNzIwOlx0XHRcdC5jbGFzcyA9IFBDSV9DTEFTU19ORVRXT1JLX09USEVSIFx1MDAzY1x1MDAzYyA4LCBcXFxuMjcyMTpcdFx0XHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxuMjcyMjpcdFx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxuMjcyMzpcdFx0fVxuMjcyNDpcdFxuMjcyNTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW10gPSB7XG4yNzI2Olx0XHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1MF9ERVZJQ0VfSUQsIFdDQyksXG4yNzI3Olx0XHRCUkNNRl9QQ0lFX0RFVklDRV9TVUIoMHg0MzU1LCBCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAweDQzNTUsIFdDQyksXG4yNzI4Olx0XHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1NF9SQVdfREVWSUNFX0lELCBXQ0MpLFxuMjcyOTpcdFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTVfREVWSUNFX0lELCBXQ0NfU0VFRCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDYzCgkJCQkJCQlvdXRwdXQ6IDU3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgZW1iZWRkZWQgc3lzdGVtcyBhbmQgTGludXggZHJpdmVyIGRldmVsb3BtZW50OgoKKipEZWVwIERpdmU6IEV4cGxvcmluZyB0aGUgYnJjbWZfcGNpZV9kZXZpZF90YWJsZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYENZV2AgaXMgYWN0dWFsbHkgcmVmZXJlbmNlZCBhbnl3aGVyZSB3aXRoaW4gdGhlIGBicmNtZl9wY2llX2RldmlkX3RhYmxlYC4gVGhpcyBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgQnJvYWRjb20mIzM5O3MgV2lGaSBkcml2ZXIsIGBicmNtZl9wY2llYCwgaGFuZGxlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIFNwZWNpZmljYWxseSwgSSBzdXNwZWN0IGBDWVdgIHJlZmVycyB0byBhIHNwZWNpZmljIEJyb2FkY29tIGNoaXBzZXQgZmFtaWx5LCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIGRyaXZlciBrbm93cyBhYm91dCBpdC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBkcml2ZXIgY29tcGF0aWJpbGl0eSBhbmQgdGhlIHBvdGVudGlhbCBuZWVkIGZvciBzb21lIGtpbmQgb2YgZGV2aWNlLXNwZWNpZmljIGhhbmRsaW5nLiBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgaGFyZHdhcmUmIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCB0aGUgc29mdHdhcmUmIzM5O3MgYXdhcmVuZXNzLiBJcyB0aGUgZGV2aWNlIElEIG1hcHBpbmcgY29ycmVjdD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgb21pc3Npb25zIEkgbmVlZCB0byBhZGRyZXNzPyBEaWdnaW5nIGludG8gdGhpcyB0YWJsZSBmZWVscyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfUENJRV9ERVZJQ0UuKkNZVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNzI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzQ4LVx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNzFfREVWSUNFX0lELCBXQ0MpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNzQ5Olx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTk2X0RFVklDRV9JRCwgQ1lXKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjc1MC1cdEJSQ01GX1BDSUVfREVWSUNFKEJSQ01fUENJRV80Mzc3X0RFVklDRV9JRCwgV0NDX1NFRUQpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjc1My1cdEJSQ01GX1BDSUVfREVWSUNFKEJSQ01fUENJRV80Mzc1Ml9ERVZJQ0VfSUQsIFdDQ19TRUVEKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6Mjc1NDpcdEJSQ01GX1BDSUVfREVWSUNFKENZX1BDSUVfNTQ1OTFfREVWSUNFX0lELCBDWVcpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzU1LVx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDgwMgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQ0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0llLCBGdXp6aW5nLCBhbmQgdGhlIGBicmNtZm1hY2AgRHJpdmVyOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgQ1lXYCBpcyB0aWVkIHRvIFBDSWUgZGV2aWNlcywgaW50ZXJlc3RpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSBmdXp6IFBDSWUgZGV2aWNlcz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSAqZ2VuZXJpYyogUENJZSBmdXp6ZXIgb3V0IG9mIHRoZSBib3guIEkgd2FzIGluaXRpYWxseSB0aGlua2luZyBpdCBtaWdodCBmdXp6IFBDSSBkZXZpY2VzIHZpYSBgdmZpb2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IG5hdGl2ZWx5IGZ1enogUENJIGRldmljZXMgdW5sZXNzIHRoZXJlIGlzIGEgZGVkaWNhdGVkIGZ1enplciwgbGlrZSB3aXRoIHBzZXVkby1zeXNjYWxscyBzdWNoIGFzIGBzeXpfcGNpXy4uLmAuIFdhaXQgYSBtaW51dGUsIGRvZXNuJiMzOTt0IFN5emthbGxlciBoYXZlIGBzeXpfcGNpXy4uLmA/IE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodC4gSXQgZG9lcyB0aGluZ3MgbGlrZSBVU0Igd2l0aCBgZHVtbXlfaGNkYCBhbmQgYmx1ZXRvb3RoIHdpdGggYHZoY2lgLCBidXQgbm90aGluZyBnZW5lcmljIGZvciBQQ0kgZGlyZWN0bHksIGl0IGRvZXNuJiMzOTt0IGFwcGVhci4KCkFoLCBidXQgd2FpdCwgdGhlcmUgaXMgYHN5el9rdm1fc2V0dXBfY3B1YCB3aGljaCBtaWdodCBvcGVuIGEgZG9vciBmb3Igc29tZSBQQ0kgZnV6emluZyB0aHJvdWdoIFFFTVUuIEhvd2V2ZXIsIFBDSSBkcml2ZXJzIGFyZSB1c3VhbGx5IGhhcmQgdG8gZnV6eiB1bmxlc3MgdmlydHVhbGl6ZWQgKGxpa2UgdmlydGlvKSBvciBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQgYnkgYSBTeXprYWxsZXIgUENJIGZ1enplciwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgU3l6a2FsbGVyIGlzIGEgYml0IGxpZ2h0IGhlcmUuIFdhaXQsIEkgdGhvdWdodCB0aGVyZSB3ZXJlIGBzeXpfcGNpXy4uLmBzeXNjYWxscz8gTm8sIEkmIzM5O20gdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVsc2UuCgpPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBgbWFjODAyMTFfaHdzaW1gLiBUaGF0JiMzOTtzIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIG1hYzgwMjExLCByaWdodD8gVGhlbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBgYnJjbWZtYWNgLCB3aGljaCBpcyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCB1c2VzIGBjZmc4MDIxMWAsIG5vdCBgbWFjODAyMTFgLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZmlybXdhcmUsIHRoYXQmIzM5O3MgYSBrZXkgZGlzdGluY3Rpb24uCgpJZiBgYnJjbWZtYWNgIGl0c2VsZiBpc24mIzM5O3QgZnV6emFibGUsIEkgbmVlZCB0byBkZWNpZGUgaWYgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBtb3ZlLiBJIG5lZWQgdG8gY29uc2lkZXIsICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgVGhhdCBsaW5lIG9mIHRoaW5raW5nIGlzIGltcG9ydGFudC4KCk5vdywgYGJyY21mbWFjYCBkb2VzIGhhdmUgVVNCIHN1cHBvcnQsIGJ1dCBgQ1lXYCBpcyBzcGVjaWZpY2FsbHkgZm9yIFNESU8gYW5kIFBDSWUsIG5vdCBVU0IuIFdhaXQsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aGF0IGBDWVdgIGlzbiYjMzk7dCB1c2VkIGluIFVTQiBhdCBhbGwuIFdlIGNoZWNrZWQgZWFybGllciwgYnV0IGl0JiMzOTtzIHdvcnRoIGEgc2Vjb25kIGxvb2sgYXQgYHVzYi5jYCB0byBjb25maXJtIHRoYXQgYEJSQ01GX0ZXVkVORE9SX0NZV2AgZG9lc24mIzM5O3QgYXBwZWFyIHRoZXJlLiBKdXN0IHdhbnQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDWVcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg4NAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCcm9hZGNvbSBXaS1GaSBGaXJtd2FyZSBQYXRocyBpbiBVU0IgdnMuIE90aGVyIEludGVyZmFjZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgQ1lXYCB0aGluZywgc3BlY2lmaWNhbGx5IGl0cyB1c2UgKG9yIGxhY2sgdGhlcmVvZikgaW4gYHVzYi5jYC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgKm5vdCogdXNlZCBpbiB0aGUgVVNCIGltcGxlbWVudGF0aW9uLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBXaGF0IGlmIEkgbWlzc2VkIHNvbWV0aGluZz8gSSBiZXR0ZXIgY2hlY2sgaWYgYEJSQ01GX0ZXVkVORE9SX0NZV2AgYXBwZWFycyAqYW55d2hlcmUqIGluIGB1c2IuY2AuIE9rYXksIEkganVzdCBncmVwcGVkIGZvciBgQlJDTUZfRldWRU5ET1JfYCB3aXRoaW4gYHVzYi5jYCBhbmQgaXQmIzM5O3MgbG9va2luZyBsaWtlIG9ubHkgYEJSQ01GX0ZXVkVORE9SX1dDQ2AgaXMgcHJlc2VudC4gVGhhdCBjb25maXJtcyBpdCwgdGhlIFVTQiBkZXZpY2VzIGFyZSBpbmRlZWQgdXNpbmcgdGhlIGBXQ0NgIHBhdGgsIG5vdCB0aGUgYENZV2AgcGF0aC4KClRoaXMgbWVhbnMgdGhlIGBDWVdgIHZlbmRvciBmaXJtd2FyZSBpcyB1c2VkIGJ5IFNESU8gYW5kIFBDSWUgZGV2aWNlcy4gR2l2ZW4gdGhhdCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBmdXp6IFNESU8gb3IgUENJZSBpbnRlcmZhY2VzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIHVubGVzcywgb2YgY291cnNlLCBhIHZlcnkgc3BlY2lmaWMgQnJvYWRjb20gU0RJTy9QQ0llIFdpLUZpIGVtdWxhdG9yIGV4aXN0cywgd2hpY2ggYXMgZmFyIGFzIEkga25vdywgaXQgZG9lc24mIzM5O3Qg4oCTIEkmIzM5O20gdGhpbmtpbmcgdGhlc2UgY29kZSBwYXRocyBhcmUgYmFzaWNhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4KCk5vdywgd2FpdCBhIHNlYy4gQ2FuIFFFTVUgZG8gQnJvYWRjb20gUENJZSBXaS1GaSBlbXVsYXRpb24/IE5vcGUuIFdoYXQgYWJvdXQgQnJvYWRjb20gU0RJTyBXaS1GaT8gQWxzbyBuby4gU28sIGluIGVmZmVjdCwgZnVuY3Rpb25zIGxpa2UgYGJyY21mX2N5d19tZ210X3R4YCBhbmQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCB3b3VsZCBiZSBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpZiBJJiMzOTttIHJ1bm5pbmcgdGhpcyB0aGluZyBpbnNpZGUgYSB2aXJ0dWFsIG1hY2hpbmUuIFRoaXMgaXMgZ29vZCB0byBrbm93LiBCdXQsIGJlZm9yZSBJIG1ha2UgdGhpcyBhIHNvbGlkIGNvbmNsdXNpb24sIEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHdoZXJlIGBicmNtZl9jeXdfb3BzYCBpcyB1c2VkIGVsc2V3aGVyZSB0byBtYWtlIHN1cmUgaXQmIzM5O3Mgbm90IHJlYWNoZWQgdmlhIHNvbWUgKm90aGVyKiB1bmV4cGVjdGVkIG1lYW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0zNTg9c3RhdGljIHZvaWQgYnJjbWZfY3l3X3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MzcwOmNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTM3MS1cdC5zZXRfc2FlX3Bhc3N3b3JkID0gYnJjbWZfY3l3X3NldF9zYWVfcHdkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM9MTI9c3RhdGljIGludCBfX2luaXQgYnJjbWZfY3l3X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE0LVx0cmV0dXJuIGJyY21mX2Z3dmlkX3JlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNTpcdFx0XHRcdFx0ICAgXHUwMDI2YnJjbWZfY3l3X29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmg6ODpleHRlcm4gY29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmg6OTojZGVmaW5lIENZV19WT1BTXHQoXHUwMDI2YnJjbWZfY3l3X29wcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE2NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIEJyb2FkY29tIFdpLUZpIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBgQlJDTUZfRldWRU5ET1JfQ1lXYC4gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQmIzM5O3Mgc3BlY2lmaWMgdG8gQnJvYWRjb20mIzM5O3MgV2ktRmkgY2hpcHMsIGxpa2VseSB0aG9zZSBjb25uZWN0ZWQgdmlhIFNESU8gb3IgUENJZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gcmVhY2hlZC4gSSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQlJDTUZfRldWRU5ET1JfQ1lXYCBpcyBvbmx5IHVzZWQgaW4gYGJjbXNkaC5jYCAoU0RJTykgYW5kIGBwY2llLmNgIChQQ0llKSBmaWxlcy4KCk5vdywgbXkgbWluZCBzdGFydHMgcmFjaW5nLiBJcyB0aGVyZSBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgdmlydHVhbGl6ZSBhbiBTRElPIG9yIFBDSWUgQnJvYWRjb20gZGV2aWNlPyBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgY29tbW9uIHNldHVwIGxpa2UgdGhhdC4gVHlwaWNhbGx5LCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgeW91JiMzOTtyZSBub3QgZ29pbmcgdG8gYmUgZW11bGF0aW5nIHRoZXNlIHNwZWNpZmljIEJyb2FkY29tIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSBwYXNzdGhyb3VnaCwgcmlnaHQ/CgpBbHJpZ2h0LCBsZXQmIzM5O3MgZXhwbG9yZSBvdGhlciBhdmVudWVzLiBDb3VsZCBgbWFjODAyMTFfaHdzaW1gIGJlIGludm9sdmVkIHNvbWVob3c/IE5vLCB3YWl0LCB0aGF0JiMzOTtzIGEgY29tcGxldGVseSBzZXBhcmF0ZSBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbS5jYCwgYW5kIGl0IGRvZXNuJiMzOTt0IHVzZSBgYnJjbWZtYWNgLiAgV2hhdCBhYm91dCBgY2ZnODAyMTFgPyBBaCwgdGhhdCYjMzk7cyB0aGUgZ2VuZXJpYyBzdWJzeXN0ZW0uIEJ1dCBldmVuIHRoYXQgb25seSBpbnRlcmFjdHMgd2l0aCBgYnJjbWZtYWNgIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkICphbmQqIGEgZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIEFuZCBzaW5jZSB3ZSBjYW4mIzM5O3QgcHJvYmUgYSBCcm9hZGNvbSBTRElPIG9yIFBDSWUgZGV2aWNlIGluIFFFTVUvR0NFLCB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgc3VjY2VlZC4gVGhlIGRldmljZSB3aWxsIG5ldmVyIHJlZ2lzdGVyIHdpdGggYGNmZzgwMjExYC4gU28sIGl0IHNlZW1zIGxpa2UgYGJyY21mX2N5d19tZ210X3R4YCBhbmQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCAqYXJlKiB1bnJlYWNoYWJsZSB1bmRlciB0eXBpY2FsIGNpcmN1bXN0YW5jZXMuCgpPa2F5LCBsZXQgbWUgcGl2b3QuIEkgd29uZGVyIGlmIHN5emthbGxlciBjb3VsZCBiZSB1c2VkIGhlcmU/IEkgaGF2ZSB0byByZW1lbWJlciBpZiBJIHNhdyBhbnkgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyLiBJIGtub3cgc29tZSBmb3JrcyBtaWdodCBoYXZlIGBzeXpfcGNpXy4uLmAgcHNldWRvLXN5c2NhbGxzLiBCdXQgdGhlIHVwc3RyZWFtIHZlcnNpb24gZG9lc27igJl0IGhhdmUgYSBnZW5lcmFsIFBDSSBmdXp6ZXIgdGhhdCBjYW4gZnVsbHkgZW11bGF0ZSBQQ0kgZGV2aWNlcywgZG9lcyBpdD8gV2FpdCwgaGFzIHRoZXJlIGJlZW4gYW55IHJlY2VudCBkZXZlbG9wbWVudCBvbiBQQ0kgZnV6emluZyB3aXRoIGB2ZmlvYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmXigJlzIGEgYENPTkZJR19QQ0lgIG9yIHNpbWlsYXIgY29uZmlndXJhdGlvbiBpbnZvbHZlZC4uLgoKRXZlbiBpZiB0aGVyZSBpcyBQQ0kgZnV6emluZywgZG9lcyBpdCBlbXVsYXRlICpCcm9hZGNvbSogV2ktRmk/IFByb2JhYmx5IG5vdC4gVXN1YWxseSwgUENJIGZ1enppbmcgaW5qZWN0cyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPIHJlYWRzL3dyaXRlcywgYnV0IHRoaXMgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBib3VuZCB0byBhIHZpcnR1YWwgZGV2aWNlLiBJIGRvbuKAmXQgdGhpbmsgdGhlcmUgaXMgYSBnZW5lcmljIFBDSSBkZXZpY2UgZW11bGF0b3Igd2l0aGluIHN5emthbGxlci4KCkxldCYjMzk7cyBzZWXigKZzeXprYWxsZXIgaGFzIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IuLi4gYnV0IGZvciBQQ0ksIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIHNpbWlsYXI/IExpa2UsIGBzeXpfcGNpX2RldmljZV9hZGRgPyBObywgbm8gc3VjaCBsdWNrLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgUENJIGRldmljZSBlbXVsYXRvci4gV2hhdCBhYm91dCBgdmhjaWA/IFRoYXTigJlzIGZvciBCbHVldG9vdGgsIG5vdCByZWxldmFudCBoZXJlLiBBbmQgYG1hYzgwMjExX2h3c2ltYCBpcyBmb3IgV2ktRmksIGJ1dCBkb2VzbiYjMzk7dCBpbnRlcmFjdCB3aXRoIHRoZSBzYW1lIGRyaXZlci4gU28sIGBicmNtZm1hY2AgaXMgZ2VuZXJhbGx5IG5vdCBmdXp6YWJsZSB1bmxlc3MgaXTigJlzIFVTQi4gQW5kLCBzaW5jZSB0aGlzIGNvZGUgc3BlY2lmaWNhbGx5IGNvbmNlcm5zIGBDWVdgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIFNESU8gYW5kIFBDSWUgb25seSwgaXTigJlzICpkZWZpbml0ZWx5KiBub3QgZnV6emFibGUuCgpPa2F5LCBiYWNrIHRvIHRoZSBwYXRjaC4gSSBuZWVkIHRvIHJldmlldyB0aGlzIGNvZGUgYWdhaW4uICAqU2NhbnMgdGhlIGNvZGUqICBIbW0sIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGl0JiMzOTtzIGluIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBhIGJ1cyB0eXBlIChTRElPL1BDSWUpIHRoYXQgaXMgbm90IGdlbmVyYWxseSBlbXVsYXRlZC4KCk9uZSBsYXN0IGNoZWNrLCBJJiMzOTttIGp1c3QgZ29pbmcgdG8gZG91YmxlLWNoZWNrIG15IGluaXRpYWwgYXNzdW1wdGlvbjogaXMgYEJSQ01GX0ZXVkVORE9SX0NZV2AgKnJlYWxseSogb25seSB1c2VkIGluIHRob3NlIHR3byBmaWxlcz8gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSQ01GX0ZXVkVORE9SX0NZVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9MzQ9ZW51bSBicmNtZl9md3ZlbmRvciB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzUtXHRCUkNNRl9GV1ZFTkRPUl9XQ0MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzY6XHRCUkNNRl9GV1ZFTkRPUl9DWVcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzctXHRCUkNNRl9GV1ZFTkRPUl9CQ0EsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MTk1Nj1zdGF0aWMgczMyIGJyY21mX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0xOTY4LVx0fSBlbHNlIGlmIChzbWUtXHUwMDNlY3J5cHRvLndwYV92ZXJzaW9ucyBcdTAwMjYgTkw4MDIxMV9XUEFfVkVSU0lPTl8yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoxOTY5Olx0XHRpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZnd2aWQgPT0gQlJDTUZfRldWRU5ET1JfQ1lXIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk3MC1cdFx0ICAgIHNtZS1cdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA9PSBXTEFOX0FLTV9TVUlURV9TQUUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE0Olx0cmV0dXJuIGJyY21mX2Z3dmlkX3JlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNS1cdFx0XHRcdFx0ICAgXHUwMDI2YnJjbWZfY3l3X29wcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xOD1zdGF0aWMgdm9pZCBfX2V4aXQgYnJjbWZfY3l3X2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoyMDpcdGJyY21mX2Z3dmlkX3VucmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0yMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjQxNy1cdFtCUkNNRl9EUlZEQVRBX0NZV10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI0MTg6XHRcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9DWVcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTktXHRcdC5md19zZWVkID0gZmFsc2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDM5PWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MzUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTM2Olx0Y2FzZSBCUkNNRl9GV1ZFTkRPUl9DWVc6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MzctXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjAyOAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQ4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IFVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBtb2RpZmllZCBzZWN0aW9uIGlzIG9ubHkgdXNlZCBpbiBgcGNpZS5jYCBhbmQgYGJjbXNkaC5jYCwgYW5kIGxpa2VseSBvbmx5IHRocm91Z2ggbWFjcm8gZXhwYW5zaW9uLiBNeSBmaXJzdCB0aG91Z2h0IHdhcywgJiMzNDtDb3VsZCB3ZSBwb3NzaWJseSB0cmlnZ2VyIHRoaXMgc29tZWhvdyB0aHJvdWdoIGBjZmc4MDIxMWAgd2l0aG91dCB0aGUgZGV2aWNlIGZ1bGx5IHByb2JlZD8mIzM0OyBCdXQgbm8sIHRoYXQgd29uJiMzOTt0IHdvcmsuIGBjZmc4MDIxMWAgbmVlZHMgYSByZWdpc3RlcmVkIGB3aXBoeWAgZGV2aWNlLCB3aGljaCB0aGUgZHJpdmVyIGNyZWF0ZXMgZHVyaW5nIHByb2JlLiBJZiB0aGUgcHJvYmUgZmFpbHMgYmVjYXVzZSB0aGVyZSYjMzk7cyBubyBoYXJkd2FyZSwgdGhlIGB3aXBoeWAgaXNuJiMzOTt0IHJlZ2lzdGVyZWQsIGFuZCBgY2ZnODAyMTFgIHdvbiYjMzk7dCBrbm93IGFueXRoaW5nIGFib3V0IGl0LgoKTGV0JiMzOTtzIHRoaW5rIGlmIHRoZXJlJiMzOTtzIGFueSBvdGhlciBhdmVudWUuIElzIHRoZXJlIGEgZHVtbXkgZHJpdmVyIGZvciBicmNtZm1hYz8gTm9wZS4gQ2FuIHdlIGluamVjdCBTRElPIGRldmljZXMgaW4gc3l6a2FsbGVyPyBOby4gUENJZT8gU3RpbGwgbm8uIFNvLCBpdCBzZWVtcyBsaWtlIHRoaXMgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpHaXZlbiB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTXkgcmVhc29uaW5nIGlzIHRoaXMgY29kZSBtb2RpZmllcyB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBCcm9hZGNvbSBicmNtZm1hYywgZGVhbGluZyB3aXRoIFNESU8gYW5kIFBDSWUgYnVzZXMuIFRoZXNlIGJ1cyB0eXBlcyBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgYWNjZXNzZWQgd2l0aGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0JiMzOTtzIHdvcmRpbmc6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBZZXAsIHRoYXQmIzM5O3MgYSBwZXJmZWN0IGZpdC4gVGhlIHNwZWNpZmljIGNvZGUgaXMgd2l0aGluIGBicmNtZm1hYy9jeXcvY29yZS5jYCwgd2hpY2ggcmVsYXRlcyB0byB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3IgZmlybXdhcmUgdmFyaWFudCBvZiB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIuIFRoaXMgQ1lXIHZhcmlhbnQgaXMgdGllZCB0byBjZXJ0YWluIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gV2UgY2FuJiMzOTt0IGVtdWxhdGUgdGhvc2UgYnVzZXMgd2l0aGluIHN0YW5kYXJkIHN5emthbGxlciBlbnZpcm9ubWVudHMuIFVubGlrZSBVU0IsIHdoZXJlIHdlIGNvdWxkIHVzZSBgZHVtbXlfaGNkYCBmb3IgZW11bGF0aW9uLgoKSnVzdCB0byBiZSAxMDAlIHN1cmUsIGxldCBtZSB2ZXJpZnkgYWdhaW4gaWYgdGhlIGBDWVdgIHZhcmlhbnQgaXMgYm91bmQgdG8gYW55IFVTQiBkZXZpY2UgSURzLiBJIGNoZWNrZWQgYHVzYi5jYCBhbmQgdGhlIGNvZGUgb25seSB1c2VzIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgLiBXYWl0LCBsZXQgbWUgY2hlY2sgdGhlIGBicmNtZl91c2JfZGV2aWRfdGFibGVgIG9uZSBtb3JlIHRpbWUsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q1lQUkVTU19VU0JfREVWSUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTExPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTQzOiNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQ0LVx0eyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBicmNtZl91c2JfZGV2aWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU1NC1cdExJTktTWVNfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNV9MSU5LU1lTX0RFVklDRV9JRCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU1NTpcdENZUFJFU1NfVVNCX0RFVklDRShDWV9VU0JfNDM3M19ERVZJQ0VfSUQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NTYtXHR7IFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xHLCBCUkNNX1VTQl80MzI0Ml9MR19ERVZJQ0VfSUQpIH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NTgtXHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU1OTpcdENZUFJFU1NfVVNCX0RFVklDRShCUkNNX1VTQl9CQ01GV19ERVZJQ0VfSUQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NjAtXHR7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NjU5CgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkEgUXVpY2sgRG91YmxlLVRha2Ugb24gdGhlIEN5cHJlc3MgRGV2aWNlIElEKioKCkhvbGQgb24gYSBzZWNvbmQhIEkgbmVlZCB0byBwcm9jZXNzIHRoaXMuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgYmVjYXVzZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgQ3lwcmVzcyBkZXZpY2UsIHRoZSBgQlJDTUZfRldWRU5ET1JfQ1lXYCBmaXJtd2FyZSB2ZW5kb3IgSUQgd291bGQgYmUgdXNlZC4gQnV0IHRoaXMgYENZUFJFU1NfVVNCX0RFVklDRWAgbWFjcm8uLi4gaXQmIzM5O3MgZGVmaW5lZCBhczoKCmBgYGMKI2RlZmluZSBDWVBSRVNTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcCgl7IFwKCQlVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXAoJCS5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcCgl9CmBgYAoKLi4uYW5kIGl0JiMzOTtzIGV4cGxpY2l0bHkgYXNzaWduaW5nIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgISBUaGF0IGNvbXBsZXRlbHkgY29udHJhZGljdHMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBJIGNhbiBzZWUgd2h5IHRoaXMgY291bGQgYmUgY29uZnVzaW5nLiBUaW1lIHRvIHZlcmlmeSB0aGlzIGFuZCBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdmVuZG9yIGFzc2lnbm1lbnRzIGlzIGNvcnJlY3QgaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZyBjcnVjaWFsLiBMZXQgbWUgZ28gYmFjayBhbmQgcmUtZXZhbHVhdGUgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1NDA6XHRcdFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXG4xNTQxOlx0XHR9XG4xNTQyOlx0XG4xNTQzOlx0I2RlZmluZSBDWVBSRVNTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxuMTU0NDpcdFx0eyBcXFxuMTU0NTpcdFx0XHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcbjE1NDY6XHRcdFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXG4xNTQ3Olx0XHR9XG4xNTQ4Olx0XG4xNTQ5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xuMTU1MDpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzE0M19ERVZJQ0VfSUQpLFxuMTU1MTpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNl9ERVZJQ0VfSUQpLFxuMTU1MjpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzI0Ml9ERVZJQ0VfSUQpLFxuMTU1MzpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzU2OV9ERVZJQ0VfSUQpLFxuMTU1NDpcdFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzODUKCQkJCQkJCW91dHB1dDogMTQ4CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgQ1lXIENvZGUgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgY29uZmlybWVkIHNvbWV0aGluZyBpbXBvcnRhbnQgcmVnYXJkaW5nIHRoZSBCcm9hZGNvbSBmaXJtd2FyZSB2ZW5kb3IgSURzLiBUaGUgYENZUFJFU1NfVVNCX0RFVklDRWAgZmxhZyBpcyBkZWZpbml0ZWx5IHNldHRpbmcgdGhlIGAuZHJpdmVyX2luZm9gIHRvIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgLCByaWdodD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZGVkIHRvIHZlcmlmeS4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGBCUkNNRl9GV1ZFTkRPUl9DWVdgIHZhbHVlICpzcGVjaWZpY2FsbHkqIGlzbiYjMzk7dCB1c2VkIGZvciBVU0IgZGV2aWNlczsgaXQmIzM5O3MgZXhjbHVzaXZlbHkgZm9yIFNESU8gYW5kIFBDSWUgaW50ZXJmYWNlcy4KCkNvbnNlcXVlbnRseSwgYW55IGNvZGUgcGF0aCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYENZV2AgdmVuZG9yIElELCBsaWtlIGBicmNtZl9jeXdfbWdtdF90eGAgb3IgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIG9wZXJhdGluZyBpbiBVU0IgZW11bGF0aW9uIG1vZGUuIFRoaXMgaXMgY3J1Y2lhbC4gU2luY2Ugb3VyIHZpcnR1YWxpemF0aW9uIHNldHVwIGRvZXNuJiMzOTt0IGVtdWxhdGUgU0RJTyBvciBQQ0llLCB0aGlzIGBDWVdgLXNwZWNpZmljIGNvZGUgYmVjb21lcyBlZmZlY3RpdmVseSBkZWFkIGNvZGUgd2l0aGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBwb3NzaWJsZSB0byB0cmlnZ2VyIHRoZXNlIGZ1bmN0aW9ucyB1bmRlciB0aGVzZSBjb25kaXRpb25zLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBgQ1lXYC1zcGVjaWZpYyBjb2RlIGlzIGluYWNjZXNzaWJsZSBnaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIG9mIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGRldmljZXMgd2UgYXJlIGVtdWxhdGluZy4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gZGVkaWNhdGluZyBmdXp6aW5nIHJlc291cmNlcyB0byBzb21ldGhpbmcgdGhhdCBjYW4mIzM5O3QgYmUgcmVhY2hlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDM6MTIuOTQ0MTQxNjc0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MDM3ODM2NzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoxMi45NDQxNTEyNzRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjEyODYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMwZTJhMzhmNWE4Y2M1MzFkNWQ0OTc1NmJlMjg3MzBhODg4OTJkOTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDg6NDM6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xcbmluZGV4IGNlMDlkNDRmYTczY2Y4Li5jY2E1M2ZmMTkzNmE0MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuQEAgLTIzLDYgKzIzLDggQEBcXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfRFdFTExfVElNRVxcdDQwMDBcXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfV0FJVF9USU1FXFx0KE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FICsgMTAwKVxcbiBcXG4rc3RhdGljIGF0b21pY190IGJyY21mX2N5d19tZ210X3R4X2lkID0gQVRPTUlDX0lOSVQoMCk7XFxuK1xcbiBzdGF0aWMgaW50IGJyY21mX2N5d19zZXRfc2FlX3B3ZChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV9jcnlwdG9fc2V0dGluZ3MgKmNyeXB0bylcXG4ge1xcbkBAIC0xNTUsNyArMTU3LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlZGFbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlYnNzaWRbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xcbi1cXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xcbitcXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZicmNtZl9jeXdfbWdtdF90eF9pZCkpO1xcbiBcXHRtZW1jcHkobWZfcGFyYW1zLVxcdTAwM2VkYXRhLCBcXHUwMDI2YnVmW0RPVDExX01HTVRfSERSX0xFTl0sXFxuIFxcdCAgICAgICBsZTE2X3RvX2NwdShtZl9wYXJhbXMtXFx1MDAzZWxlbikpO1xcbiBcXG5AQCAtMjAwLDcgKzIwMiw3IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuIFxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnI7XFxuLVxcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XFxuK1xcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuQEAgLTIwOCw2ICsyMTAsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRkcnZyID0gaWZwLVxcdTAwM2VkcnZyO1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xcbitcXHRcXHRpZiAocGFyYW1zLVxcdTAwM2VwbWtpZClcXG4rXFx0XFx0XFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXFx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XFxuIFxcdFxcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoxMy41NTEzOTI0NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3NDMwNTc0ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMwZTJhMzhmNWE4Y2M1MzFkNWQ0OTc1NmJlMjg3MzBhODg4OTJkOTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAwODo0MzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IGNlMDlkNDRmYTczY2Y4Li5jY2E1M2ZmMTkzNmE0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuQEAgLTIzLDYgKzIzLDggQEBcbiAjZGVmaW5lIE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FXHQ0MDAwXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfV0FJVF9USU1FXHQoTUdNVF9BVVRIX0ZSQU1FX0RXRUxMX1RJTUUgKyAxMDApXG4gXG4rc3RhdGljIGF0b21pY190IGJyY21mX2N5d19tZ210X3R4X2lkID0gQVRPTUlDX0lOSVQoMCk7XG4rXG4gc3RhdGljIGludCBicmNtZl9jeXdfc2V0X3NhZV9wd2Qoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX2NyeXB0b19zZXR0aW5ncyAqY3J5cHRvKVxuIHtcbkBAIC0xNTUsNyArMTU3LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWJzc2lkWzBdLCBcdTAwMjZtZ210LVx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XG4tXHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XG4rXHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoYXRvbWljX2luY19yZXR1cm4oXHUwMDI2YnJjbWZfY3l3X21nbXRfdHhfaWQpKTtcbiBcdG1lbWNweShtZl9wYXJhbXMtXHUwMDNlZGF0YSwgXHUwMDI2YnVmW0RPVDExX01HTVRfSERSX0xFTl0sXG4gXHQgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLVx1MDAzZWxlbikpO1xuIFxuQEAgLTIwMCw3ICsyMDIsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi1cdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XG4rXHRzdHJ1Y3QgYnJjbWZfYXV0aF9yZXFfc3RhdHVzX2xlIGF1dGhfc3RhdHVzID0ge307XG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdGJyY21mX2RiZyhUUkFDRSwgXCJFbnRlclxcblwiKTtcbkBAIC0yMDgsNiArMjEwLDggQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRpZiAocGFyYW1zLVx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4rXHRcdGlmIChwYXJhbXMtXHUwMDNlcG1raWQpXG4rXHRcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbiBcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpO1xuIFx0fSBlbHNlIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCJFeHRlcm5hbCBhdXRoZW50aWNhdGlvbiBmYWlsZWQ6IHN0YXR1cz0lZFxcblwiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDM6MTMuNTUxNDA4MjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTAzNDM4OTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJyb2FkY29tIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgc3BlY2lmaWNhbGx5IGlmIGl0J3MgcmVhY2hhYmxlIGluIGEgZnV6emluZyBjb250ZXh0LiBJdCBzZWVtcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYSBzdGF0aWMgYXRvbWljIHZhcmlhYmxlLCBgYnJjbWZfY3l3X21nbXRfdHhfaWRgLCBhbmQgdXNpbmcgaXQgdG8gc2V0IGBtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkYCB3aXRoaW4gdGhlIGBicmNtZl9jeXdfbWdtdF90eGAgZnVuY3Rpb24sIHdoaWNoIHJlcGxhY2VzIHRoZSB1c2Ugb2YgYCpjb29raWVgLiBJbnRlcmVzdGluZy4gQWxzbywgaXQncyBpbml0aWFsaXppbmcgYGF1dGhfc3RhdHVzYCB0byB6ZXJvIGluIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgYW5kIGNvbmRpdGlvbmFsbHkgY29weWluZyB0aGUgYHBta2lkYCBpZiBpdCdzIG5vdCBOVUxMLiBTdGFuZGFyZCBlbm91Z2guXG5cbkJ1dCBub3cgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGFwcGxpZXMgdG8gZnV6emluZy4gSXQncyBCcm9hZGNvbSwgd2hpY2ggb2Z0ZW4gbWVhbnMgc3BlY2lmaWMgaGFyZHdhcmUuIEdldHRpbmcgYSByZWFsIEJyb2FkY29tIGRldmljZSB0byB0ZXN0IG9uIGNhbiBiZSBhIGNoYWxsZW5nZS4gVmlydHVhbGl6YXRpb24gdXN1YWxseSBhZGRzIGFub3RoZXIgbGF5ZXIgb2YgY29tcGxleGl0eSBmb3Igd2lyZWxlc3MgZHJpdmVycyB1bmxlc3MgeW91J3JlIGx1Y2t5IGVub3VnaCB0byBmaW5kIGFuIGVtdWxhdG9yIChsaWtlIGBtYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgaGVscGZ1bCBmb3IgZ2VuZXJpYyBtYWM4MDIxMSB0ZXN0aW5nLCBidXQgbGlrZWx5IG5vdCBicmNtZm1hYykuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkP1xuXG5XYWl0IGEgc2Vjb25k4oCmIGBicmNtZm1hY2AgaGFzIFVTQiwgU0RJTywgYW5kIFBDSUUgaW50ZXJmYWNlcy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gVVNCIGlzIGZhciBtb3JlIGFtZW5hYmxlIHRvIGZ1enppbmcuIFN5emthbGxlciBoYXMgZXhjZWxsZW50IFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgZ2FkZ2V0L2R1bW15X2hjZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYGJyY21mbWFjYCBzdXBwb3J0cyBVU0IuIFllcywgdGhlcmUncyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jYC4gR29vZCwgdGhhdCBvcGVucyB1cCBhIHNpZ25pZmljYW50IGF0dGFjayBzdXJmYWNlLiBOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYGJyY21mX2N5d19tZ210X3R4YCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLiBUaGF0J3MgdGhlIGtleSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjgsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoyMC40NTQ4NTExMjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxOTgzMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19tZ210X3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MjY6c3RhdGljIGF0b21pY190IGJyY21mX2N5d19tZ210X3R4X2lkID0gQVRPTUlDX0lOSVQoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xMDM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MTA0OmludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEwNS1cXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xNTktXFx0bWVtY3B5KFxcdTAwMjZtZl9wYXJhbXMtXFx1MDAzZWJzc2lkWzBdLCBcXHUwMDI2bWdtdC1cXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoxNjA6XFx0bWZfcGFyYW1zLVxcdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMihhdG9taWNfaW5jX3JldHVybihcXHUwMDI2YnJjbWZfY3l3X21nbXRfdHhfaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xNjEtXFx0bWVtY3B5KG1mX3BhcmFtcy1cXHUwMDNlZGF0YSwgXFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MjM2PXN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzg6XFx0ZHJ2ci1cXHUwMDNlb3BzLVxcdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM5LVxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoyMC41OTY4NDEyNjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDk0NDgxODIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBkcml2ZXIsIGBicmNtZm1hY2AsIGlzIHNldCB1cC4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGJyY21mX2N5d19tZ210X3R4YCBpcyBzcGVjaWZpY2FsbHkgYXNzaWduZWQgdG8gdGhlIGBkcnZyLVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4YCBwb2ludGVyLiBBbmQsIHNpbWlsYXJseSwgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyBhc3NpZ25lZCB0byBgZHJ2ci1cdTAwM2VvcHMtXHUwMDNlZXh0ZXJuYWxfYXV0aGAuIFRoaXMgaXMgc3RhbmRhcmQgZHJpdmVyIGFyY2hpdGVjdHVyZTsgSSdtIHVzZWQgdG8gc2VlaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIGhhbmRsZWQgdGhpcyB3YXkuXG5cbk5vdywgSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgYGJyY21mbWFjYCBpbnN0YW5jZSBpcyB2dWxuZXJhYmxlIHZpYSBVU0IuIFRoYXQncyB3aGF0IEkgd2FudCB0byBuYWlsIGRvd24gbmV4dC4gSSdsbCBxdWlja2x5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGBDT05GSUdfQlJDTUZNQUNfVVNCYC4gVGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgY3J1Y2lhbCBpbmRpY2F0b3IgYXMgdG8gd2hldGhlciBVU0IgaXMgZXZlbiBhIHZhbGlkIHBhdGguIElmIGl0J3MgZW5hYmxlZCwgdGhlbiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSWYgbm90LCB0aGVuIEkgY2FuIG1vdmUgb24gdG8gb3RoZXIgYXJlYXMgb2YgaW50ZXJlc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MzgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0Mzo0MS41NDE2NjIxNzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMjkwNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GTUFDX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGU9MzY9YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfU0RJTykgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM4LVxcdFxcdGJjbXNkaC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlOjM5OmJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgKz0gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00MC1cXHRcXHR1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMyMz1zdGF0aWMgaW5saW5lIGludCBicmNtZl9zZGlvX3JlZ2lzdGVyKHZvaWQpIHsgcmV0dXJuIDA7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjMyNjojaWZkZWYgQ09ORklHX0JSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zMjctdm9pZCBicmNtZl91c2JfZXhpdCh2b2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0zMDI9c3RhdGljIGludCBicmNtZl91c2JfdHhfY3RscGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1ZiwgdTMyIGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0zMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjMxNTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzE2LVxcdFxcdGVyciA9IC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MzQ3PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3J4X2N0bHBrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzozNjA6XFx0aWYgKGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgIT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTM2MS1cXHRcXHRlcnIgPSAtRUlPO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTUwNz1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTI1OlxcdGlmIChkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9VUCB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo1MjY6XFx0ICAgIGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1NMRUVQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUyNy1cXHRcXHRza2JfcHV0KHNrYiwgdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01NzE9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2ZpbGxfYWxsKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjU3NTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTc2LVxcdFxcdGJyY21mX2VycihcXFwiYnVzIGlzIG5vdCB1cD0lZFxcXFxuXFxcIiwgZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NTg0PWJyY21mX3VzYl9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLCBpbnQgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk2LVxcdC8qIHVwZGF0ZSBzdGF0ZSBvZiB1cHBlciBsYXllciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo1OTc6XFx0aWYgKHN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU5OC1cXHRcXHRicmNtZl9kYmcoVVNCLCBcXFwiREJVUyBpcyBkb3duXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk5LVxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYmNtZl9idXMsIEJSQ01GX0JVU19ET1dOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NjAwOlxcdH0gZWxzZSBpZiAoc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTYwMS1cXHRcXHRicmNtZl9kYmcoVVNCLCBcXFwiREJVUyBpcyB1cFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjA4PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3R4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy02MjAtXFx0YnJjbWZfZGJnKFVTQiwgXFxcIkVudGVyLCBza2I9JXBcXFxcblxcXCIsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjYyMTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjIyLVxcdFxcdHJldCA9IC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjY1PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3VwKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy02NjktXFx0YnJjbWZfZGJnKFVTQiwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NjcwOlxcdGlmIChkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjcxLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3My1cXHQvKiBTdWNjZXNzLCBpbmRpY2F0ZSBkZXZpbmZvIGlzIGZ1bGx5IHVwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjY3NDpcXHRicmNtZl91c2Jfc3RhdGVfY2hhbmdlKGRldmluZm8sIEJSQ01GTUFDX1VTQl9TVEFURV9VUCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz03MTQ9c3RhdGljIHZvaWQgYnJjbWZfdXNiX2Rvd24oc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NzIyOlxcdGlmIChkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjMtXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjcyNTpcXHRicmNtZl91c2Jfc3RhdGVfY2hhbmdlKGRldmluZm8sIEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNzI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTk3Nj1zdGF0aWMgaW50IGJyY21mX3VzYl9kbHN0YXJ0KHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbywgdTggKmZ3LCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTk4OS1cXHRpZiAoZXJyID09IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MDpcXHRcXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTk5MS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MjpcXHRcXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0ZBSUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTk5My1cXHRicmNtZl9kYmcoVVNCLCBcXFwiRXhpdCwgZXJyPSVkXFxcXG5cXFwiLCBlcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTExMDM9c3RydWN0IGJyY21mX3VzYmRldiAqYnJjbWZfdXNiX2F0dGFjaChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTExMS1cXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLm50eHEgPSBudHhxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTEyOlxcdGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNDgzPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDg4LVxcdGJyY21mX2RiZyhVU0IsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE0ODk6XFx0ZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSA9IEJSQ01GTUFDX1VTQl9TVEFURV9TTEVFUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ5MC1cXHRicmNtZl9jYW5jZWxfYWxsX3VyYnMoZGV2aW5mbyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTQ5OD1zdGF0aWMgaW50IGJyY21mX3VzYl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTUwNTpcXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA2LVxcdGJyY21mX3VzYl9yeF9maWxsX2FsbChkZXZpbmZvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaC00LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo1OiNpZm5kZWYgQlJDTUZNQUNfVVNCX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6NjojZGVmaW5lIEJSQ01GTUFDX1VTQl9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oPTg9ZW51bSBicmNtZl91c2Jfc3RhdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo5OlxcdEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDoxMDpcXHRCUkNNRk1BQ19VU0JfU1RBVEVfRExfRkFJTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTE6XFx0QlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjEyOlxcdEJSQ01GTUFDX1VTQl9TVEFURV9VUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTM6XFx0QlJDTUZNQUNfVVNCX1NUQVRFX1NMRUVQXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oLTE0LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg9MzU9c3RydWN0IGJyY21mX3VzYnJlcSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmgtNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjQyOiNlbmRpZiAvKiBCUkNNRk1BQ19VU0JfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0Mzo0MS43MTM5NjA0OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU5NDA3NDczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBTdXBwb3J0IGluIHRoZSBgYnJjbWZtYWNgIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIGBicmNtZm1hY2AgZHJpdmVyIGFuZCBJIHNlZW0gdG8gcmVjYWxsIGl0IGhhdmluZyBVU0Igc3VwcG9ydC4gTm93LCB3aGVyZSB3YXMgdGhhdCBwYXRjaD8gQWhhLCBpdCdzIG1lbnRpb25lZCBpbiBgYnJjbWZtYWMvY3l3L2NvcmUuY2AuIEludGVyZXN0aW5nLiBUaGUgbmV4dCBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgaXMsIGlzIHRoaXMgVVNCIGZ1bmN0aW9uYWxpdHkgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIEJyb2FkY29tIGNoaXBzZXQsIG9yIGlzIGl0IGEgbW9yZSBnZW5lcmFsIGltcGxlbWVudGF0aW9uIGFwcGxpY2FibGUgYWNyb3NzIHRoZSBgYnJjbWZtYWNgIGZhbWlseT8gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSwgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgaXRzZWxmLCBzbyBsZXQncyBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgIGZvciBzb21lIGRldGFpbGVkIGluc2lnaHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTcyLCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6MDAuMzA4MDM4MDI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NTMxODA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTIwMD1icmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjIzNjpzdGF0aWMgdm9pZCBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0zNzA9Y29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzczLVxcdC5hY3RpdmF0ZV9ldmVudHMgPSBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3NDpcXHQuZ2V0X2NmZzgwMjExX29wcyA9IGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTM3NS1cXHQucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMgPSBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjAwLjk2MzM2NjU3NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTAwMDA2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYnJjbWZfY3l3X29wcyBBc3NpZ25tZW50KipcblxuQWxyaWdodCwgc28gYGJyY21mX2N5d19vcHNgIGlzIGdldHRpbmcgaW5pdGlhbGl6ZWQgd2l0aCBgYnJjbWZfZnd2aWRfb3BzYC4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgbm90IG5lY2Vzc2FyaWx5IHVudXN1YWwuIEl0IHN1Z2dlc3RzIHRoYXQgdGhlIGRyaXZlcidzIHVuZGVybHlpbmcgb3BlcmF0aW9ucyBhcmUgYmVpbmcgbWFuYWdlZCBieSB0aGUgZmlybXdhcmUgdmlkZW8gaW50ZXJmYWNlLiBMZXQncyBzZWUgaG93IGBicmNtZl9jeXdfb3BzYCBpcyBhY3R1YWxseSAqdXNlZCouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAsIHNlZSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBwb2ludHMgb2YgY29tbW9uYWxpdHkgYW5kIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSB0d28gc3RydWN0dXJlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYXJjaGl0ZWN0dXJlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRoZSBmdW5jdGlvbnMgd2l0aGluIGBicmNtZl9jeXdfb3BzYCBhcmUgY2FsbGVkLiBUaGlzIGxpa2VseSBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUgZmlybXdhcmUgaW50ZXJhY3Rpb24gYW5kIHRoZSBkYXRhIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MTksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDowNS4wMTMzNzAzMzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTYwMTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MzU4PXN0YXRpYyB2b2lkIGJyY21mX2N5d19yZWdpc3Rlcl9ldmVudF9oYW5kbGVycyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3MDpjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzcxLVxcdC5zZXRfc2FlX3Bhc3N3b3JkID0gYnJjbWZfY3l3X3NldF9zYWVfcHdkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNC1cXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNTpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YnJjbWZfY3l3X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC03LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oOjg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcXHQoXFx1MDAyNmJyY21mX2N5d19vcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjA1LjE4ODk3ODc4MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI3NDU4MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlJDTUZfRldWRU5ET1JfQ1lXIFZlbmRvcioqXG5cbk9rYXksIHNvIEkgc2VlIGEgbmV3IHZlbmRvciwgYEJSQ01GX0ZXVkVORE9SX0NZV2AsIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBpbnRlcmZhY2Ugd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVuZG9yIHZpYSBVU0I/XCIgSXQncyBhIGtleSBxdWVzdGlvbiwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgZGlnIGludG8gdGhlIGBicmNtZm1hY2AgbW9kdWxlIHRvIHNlZSBob3cgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXMgaGFuZGxlZCB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGFuZCB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gbW9kZWwgdG8gYW5zd2VyIHRoYXQgVVNCIHF1ZXN0aW9uIGRlZmluaXRpdmVseS4gVGhpcyBjb3VsZCBiZSBhIG5ldyBkZXZpY2Ugb3IgYW4gZXZvbHV0aW9uIG9mIGV4aXN0aW5nIHN1cHBvcnQuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc3NywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjA4LjIxNjQ0MTAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUyOTU5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfRldWRU5ET1JfQ1lXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTM0PWVudW0gYnJjbWZfZnd2ZW5kb3Ige1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zNS1cXHRCUkNNRl9GV1ZFTkRPUl9XQ0MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjM2OlxcdEJSQ01GX0ZXVkVORE9SX0NZVyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzctXFx0QlJDTUZfRldWRU5ET1JfQkNBLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MTk1Nj1zdGF0aWMgczMyIGJyY21mX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTE5NjgtXFx0fSBlbHNlIGlmIChzbWUtXFx1MDAzZWNyeXB0by53cGFfdmVyc2lvbnMgXFx1MDAyNiBOTDgwMjExX1dQQV9WRVJTSU9OXzIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoxOTY5OlxcdFxcdGlmIChkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZWZ3dmlkID09IEJSQ01GX0ZXVkVORE9SX0NZVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTE5NzAtXFx0XFx0ICAgIHNtZS1cXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gPT0gV0xBTl9BS01fU1VJVEVfU0FFKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM6MTQ6XFx0cmV0dXJuIGJyY21mX2Z3dmlkX3JlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTUtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmJyY21mX2N5d19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xOD1zdGF0aWMgdm9pZCBfX2V4aXQgYnJjbWZfY3l3X2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjIwOlxcdGJyY21mX2Z3dmlkX3VucmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMjEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTctXFx0W0JSQ01GX0RSVkRBVEFfQ1lXXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI0MTg6XFx0XFx0LnZlbmRvciA9IEJSQ01GX0ZXVkVORE9SX0NZVyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTktXFx0XFx0LmZ3X3NlZWQgPSBmYWxzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOT1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MzUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTM2OlxcdGNhc2UgQlJDTUZfRldWRU5ET1JfQ1lXOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUzNy1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDowOC40MDE4MDg2NzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE1NzY1MzI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgVmVuZG9yIEZpcm13YXJlIFVzYWdlIEFjcm9zcyBEcml2ZXJzKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgQlJDTUZfRldWRU5ET1JfQ1lXYCBkZWZpbml0aW9uLiBJIHNlZSBpdCByZWZlcmVuY2VkIHdpdGhpbiBgcGNpZS5jYCwgYW5kIHRoYXQgdHJpZ2dlcnMgYSBxdWVzdGlvbjogV2hlcmUgZWxzZSBpcyB0aGlzIHZlbmRvciBmaXJtd2FyZSBwb3RlbnRpYWxseSBiZWluZyB1c2VkPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcywgaXMgaXQgYWxzbyB1dGlsaXplZCBpbiB0aGUgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGB1c2IuY2A/IFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgYnJvYWRlciBpbXBhY3QgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGF0IHBhcnRpY3VsYXIgZmlybXdhcmUsIGFuZCBlbnN1cmluZyBpdOKAmXMgaGFuZGxlZCBjb25zaXN0ZW50bHkgYWNyb3NzIGFsbCByZWxldmFudCBkZXZpY2UgY29udGV4dHMuIEkgbmVlZCB0byB0cmFjayB0aGlzIGRvd24gdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExODMsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDoxNy41NTk0Njk3MTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDI2MTA4MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfRldWRU5ET1JfQ1lXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6MTcuNzg5Nzc2MTQyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODQ2Mjk3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gYGZ3dmlkYCBpbiBgdXNiLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBmd3ZpZGAgdmFyaWFibGUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIG1vZGlmaWVkIHdpdGhpbiB0aGUgYHVzYi5jYCBmaWxlLiBUaGlzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZy91bmRlcnN0YW5kaW5nIHNvbWUgcmVjZW50IGJlaGF2aW9yIEkndmUgb2JzZXJ2ZWQuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgcmVmZXJlbmNlcywgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWxzIG9yIGFzc2lnbm1lbnRzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgaXRzIHZhbHVlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGB1c2IuY2AgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGFueSBleHRlcm5hbCBzb3VyY2VzLiBMZXQncyBzdGFydCBieSBtZXRob2RpY2FsbHkgc2VhcmNoaW5nIGZvciBpbnN0YW5jZXMgb2YgYGZ3dmlkYCBhbmQgc2VlIHdoYXQgdGhlIGNvZGUgYXJvdW5kIGl0IHRlbGxzIHVzLiBUaGlzIG1pZ2h0IGxlYWQgbWUgZG93biBhIHJhYmJpdCBob2xlLCBidXQgaG9wZWZ1bGx5LCBJIGNhbiByZWNvbnN0cnVjdCB0aGUgbG9naWNhbCBmbG93IHJlbGF0ZWQgdG8gdGhpcyBwYXJhbWV0ZXIgYW5kIGl0cyBzaWduaWZpY2FuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDIxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6MjIuMDc0NDA5NzA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQyODAwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnd2aWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI0NTpcXHRcXHRcXHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XFx0YnVzLVxcdTAwM2Vmd3ZpZCA9IGZ3dmlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjcxLVxcdGJ1cy1cXHUwMDNlYWx3YXlzX3VzZV9md3NfcXVldWUgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDoyMi4yMDg2OTk1NjFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMwODYyNTYyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBicmNtZl91c2JfcHJvYmVfY2JgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRyaWdnZXJpbmcgYGJyY21mX3VzYl9wcm9iZV9jYmAuIEknbSBzdGFydGluZyBieSB0cmFjaW5nIGJhY2sgdGhlIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIHdoaWNoIGlzIHVzdWFsbHkgdGhlIGJlc3QgYXBwcm9hY2ggd2hlbiBkZWFsaW5nIHdpdGggYSBkZXZpY2UgZHJpdmVyJ3MgcHJvYmUgY2FsbGJhY2suIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtJ3MgY29yZSBwcm9iZSBtZWNoYW5pc21zLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCBvciBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gVVNCLXJlbGF0ZWQgc3RydWN0dXJlcyBvciBmdW5jdGlvbnMuXG5cbkknbSBtZW50YWxseSBtYXBwaW5nIHRoZSBVU0IgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhpbmtpbmcgdGhyb3VnaCB0aGUgYHVzYl9kcml2ZXJgIHN0cnVjdHVyZSBhbmQgaXRzIG1lbWJlcnMsIEknbSBleHBlY3RpbmcgdG8gZmluZCBgYnJjbWZfdXNiX3Byb2JlX2NiYCByZWZlcmVuY2VkIHRoZXJlLCBvciBwZXJoYXBzIHdpdGhpbiBhIHBsYXRmb3JtLXNwZWNpZmljIHNldHVwIGZ1bmN0aW9uIGZvciB0aGUgQnJvYWRjb20gZGV2aWNlLiBJIGFudGljaXBhdGUgdGhpcyB3aWxsIGludm9sdmUgdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgVVNCIGNvcmUsIHRoZSBkZXZpY2UncyBkZXNjcmlwdG9ycywgYW5kIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIHRyeWluZyB0byBpZGVudGlmeSB0aGUgcGF0aCB0aGF0IGxlYWRzIGZyb20gYSBkZXZpY2UgaW5zZXJ0aW9uIG9yIGVudW1lcmF0aW9uIGV2ZW50IHRvIHRoaXMgc3BlY2lmaWMgY2FsbGJhY2sgYmVpbmcgaW52b2tlZC4gSSdsbCBiZSB0aGlua2luZyBhYm91dCBob3cgZGV2aWNlIElEcyBhcmUgbWF0Y2hlZCwgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYXJkd2FyZS5cblxuSSdtIG1lbnRhbGx5IHByZXBhcmluZyBmb3IgcG90ZW50aWFsIGNvbXBsaWNhdGlvbnMuIFRoZSBjYWxsIGNoYWluIGNvdWxkIGJlIGluZGlyZWN0LCBpbnZvbHZpbmcgbXVsdGlwbGUgbGF5ZXJzIG9mIGFic3RyYWN0aW9uLiBJJ2xsIHdhdGNoIG91dCBmb3IgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBhIGhvdHBsdWcgc2NlbmFyaW8uIEFsc28sIEknbGwga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGNvcmUgYW5kIGFueSBzcGVjaWZpYyBxdWlya3Mgb2YgdGhlIEJyb2FkY29tIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhlc2UgZGV2aWNlcyBjYW4gYmUgdHJpY2t5IGFuZCBtYXkgcmVxdWlyZSBjdXN0b20gcHJvYmluZyBzZXF1ZW5jZXMsIHNvIEknbGwgYmUgbG9va2luZyBmb3IgdGhvc2UgdG9vLiBJJ2xsIGZvY3VzIG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBVU0IgZGV2aWNlLCBwYXJ0aWN1bGFybHkgdGhlIGRldmljZSwgaW50ZXJmYWNlIGFuZCBlbmRwb2ludCBzdHJ1Y3R1cmVzLCBhbmQgdGhlbiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdG8gdHJhY2sgdGhlIGNhbGwgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NTQsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDo0NS4yOTQ5NTg3NTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODE0OTA2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcHJvYmVfY2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ1LVxcdFxcdFxcdCAgICAgIGVudW0gYnJjbWZfZnd2ZW5kb3IgZnd2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0Mj1icmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDQzOlxcdHJldCA9IGJyY21mX3VzYl9wcm9iZV9jYihkZXZpbmZvLCBpZC1cXHUwMDNlZHJpdmVyX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQ0LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjQ1LjQ5MzExNzI0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU0NTg2MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBVU0IgZHJpdmVyIGRldmVsb3BtZW50OlxuXG4qKkFuYWx5emluZyB0aGUgRGF0YSBGbG93OiBgaWQtXHUwMDNlZHJpdmVyX2luZm9gIGFuZCBgZnd2aWRgKipcblxuUmlnaHQsIHNvIGBpZC1cdTAwM2Vkcml2ZXJfaW5mb2AgaXMgYmVpbmcgcGFzc2VkIGFyb3VuZCwgc3BlY2lmaWNhbGx5IGFzIGBmd3ZpZGAuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgZnd2aWRgIHZhbHVlIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBgdXNiLmNgIGZpbGUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGRhdGEgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgd2l0aCB0aG9zZSBzcGVjaWZpYyBgZHJpdmVyX2luZm9gIHZhbHVlcy4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgaW5pdGlhbGl6YXRpb24gc3RlcHMsIGZvciB0aGUgZGV2aWNlIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgVVNCIHN1YnN5c3RlbS4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBtZWFuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgxOCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjUwLjE0NzczMjA5MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MTEzOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GX0ZXVkVORE9SX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTE9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MzMtXFx0XFx0VVNCX0RFVklDRShCUkNNX1VTQl9WRU5ET1JfSURfQlJPQURDT00sIGRldl9pZCksIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTUzNDpcXHRcXHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM5LVxcdFxcdFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xJTktTWVMsIGRldl9pZCksIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU0MDpcXHRcXHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQ1LVxcdFxcdFVTQl9ERVZJQ0UoQ1lfVVNCX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NDY6XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU0Ny1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjUwLjM2Mjg2NzgyNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc5NzUwNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIFRoaXMgYEJSQ01GX0ZXVkVORE9SX1dDQ2Ag4oCTIGhvbGQgb24sIGlzIHRoaXMgYWN0dWFsbHkgdXNlZCBhY3Jvc3MgKmFsbCogVVNCIGRldmljZXM/IFRoYXQgY2FuJ3QgYmUgcmlnaHQuIExldCdzIGRpZyBkZWVwZXIgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0J3MgZ29pbmcgb24uXG5cbioqSW52ZXN0aWdhdGluZyBVU0IgRGV2aWNlIEZpcm13YXJlIExvYWRpbmcqKlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzIHF1aWNrbHkuIE15IGluc3RpbmN0cyB0ZWxsIG1lIHNvbWV0aGluZyBpcyBhbWlzcyBoZXJlLiBMZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNgLiBTcGVjaWZpY2FsbHksIGFyb3VuZCBsaW5lIDE1MzMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0LiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgc2VjdGlvbiB0byBzZWUgaG93IGBCUkNNRl9GV1ZFTkRPUl9XQ0NgIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCB0byBzZWUgaWYgbXkgaW5pdGlhbCBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LiBUaGlzIHNlZW1zIGxpa2UgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZSBhbmQgSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciB2YXJpYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MzksIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDo1NC41NDI2MjM5MDVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTMwOlxcdFxcbjE1MzE6XFx0I2RlZmluZSBCUkNNRl9VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbjE1MzI6XFx0XFx0eyBcXFxcXFxuMTUzMzpcXHRcXHRcXHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcXFxcbjE1MzQ6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG4xNTM1OlxcdFxcdH1cXG4xNTM2OlxcdFxcbjE1Mzc6XFx0I2RlZmluZSBMSU5LU1lTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxcXFxuMTUzODpcXHRcXHR7IFxcXFxcXG4xNTM5OlxcdFxcdFxcdFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xJTktTWVMsIGRldl9pZCksIFxcXFxcXG4xNTQwOlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxcXFxuMTU0MTpcXHRcXHR9XFxuMTU0MjpcXHRcXG4xNTQzOlxcdCNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbjE1NDQ6XFx0XFx0eyBcXFxcXFxuMTU0NTpcXHRcXHRcXHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbjE1NDY6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG4xNTQ3OlxcdFxcdH1cXG4xNTQ4OlxcdFxcbjE1NDk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xcbjE1NTA6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzE0M19ERVZJQ0VfSUQpLFxcbjE1NTE6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNl9ERVZJQ0VfSUQpLFxcbjE1NTI6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzI0Ml9ERVZJQ0VfSUQpLFxcbjE1NTM6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzU2OV9ERVZJQ0VfSUQpLFxcbjE1NTQ6XFx0XFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcXG4xNTU1OlxcdFxcdENZUFJFU1NfVVNCX0RFVklDRShDWV9VU0JfNDM3M19ERVZJQ0VfSUQpLFxcbjE1NTY6XFx0XFx0eyBVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9MRywgQlJDTV9VU0JfNDMyNDJfTEdfREVWSUNFX0lEKSB9LFxcbjE1NTc6XFx0XFx0Lyogc3BlY2lhbCBlbnRyeSBmb3IgZGV2aWNlIHdpdGggZmlybXdhcmUgbG9hZGVkIGFuZCBydW5uaW5nICovXFxuMTU1ODpcXHRcXHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXFxuMTU1OTpcXHRcXHRDWVBSRVNTX1VTQl9ERVZJQ0UoQlJDTV9VU0JfQkNNRldfREVWSUNFX0lEKSxcXG4xNTYwOlxcdFxcdHsgLyogZW5kOiBhbGwgemVyb2VzICovIH1cXG4xNTYxOlxcdH07XFxuMTU2MjpcXHRcXG4xNTYzOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBicmNtZl91c2JfZGV2aWRfdGFibGUpO1xcbjE1NjQ6XFx0XFxuMTU2NTpcXHRzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYnJjbWZfdXNiZHJ2ciA9IHtcXG4xNTY2OlxcdFxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuMTU2NzpcXHRcXHQucHJvYmUgPSBicmNtZl91c2JfcHJvYmUsXFxuMTU2ODpcXHRcXHQuZGlzY29ubmVjdCA9IGJyY21mX3VzYl9kaXNjb25uZWN0LFxcbjE1Njk6XFx0XFx0LmlkX3RhYmxlID0gYnJjbWZfdXNiX2RldmlkX3RhYmxlLFxcbjE1NzA6XFx0XFx0LnN1c3BlbmQgPSBicmNtZl91c2Jfc3VzcGVuZCxcXG4xNTcxOlxcdFxcdC5yZXN1bWUgPSBicmNtZl91c2JfcmVzdW1lLFxcbjE1NzI6XFx0XFx0LnJlc2V0X3Jlc3VtZSA9IGJyY21mX3VzYl9yZXNldF9yZXN1bWUsXFxuMTU3MzpcXHRcXHQuc3VwcG9ydHNfYXV0b3N1c3BlbmQgPSB0cnVlLFxcbjE1NzQ6XFx0XFx0LmRpc2FibGVfaHViX2luaXRpYXRlZF9scG0gPSAxLFxcbjE1NzU6XFx0fTtcXG4xNTc2OlxcdFxcbjE1Nzc6XFx0c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqbm90dXNlZClcXG4xNTc4OlxcdHtcXG4xNTc5OlxcdFxcdC8qIGRldmljZSBwYXN0IGlzIHRoZSB1c2IgaW50ZXJmYWNlIHNvIHdlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjU0LjU0Mjk0NjkwNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU4NjIyMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBCUkNNRiBGaXJtd2FyZSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXNuJ3QgYWN0dWFsbHkgbGV2ZXJhZ2VkIHdpdGhpbiB0aGUgYHVzYi5jYCBkcml2ZXIgY29kZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRpbWUgdG8gc2hpZnQgZm9jdXMgYW5kIHNlZSBpZiBpdCdzIGJlaW5nIHV0aWxpemVkIGVsc2V3aGVyZS4gTGV0J3MgcGl2b3Qgb3VyIGF0dGVudGlvbiBvdmVyIHRvIGBzZGlvLmNgLiBIb3BlZnVsbHksIHRoZSBhbnN3ZXIgbGllcyB3aXRoaW4gdGhhdCBmaWxlLiBJIGhhdmUgYSBmZWVsaW5nIHRoZSBmaXJtd2FyZSB2ZW5kb3Igc2VsZWN0aW9uIGlzIGxpa2VseSBoYW5kbGVkIHRoZXJlLCBjb25zaWRlcmluZyB0aGUgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgY29tbW9uIHVzZS1jYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc5NiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6NTcuNzAxNTcyODYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE4MjY3MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GX0ZXVkVORE9SX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDo1Ny44MzM0MjMwOTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5MzM2MzM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2Vzcywga25vd2luZyBmdWxsIHdlbGwgd2hhdCBJJ20gbG9va2luZyBmb3I6XG5cbioqQkNNU0RILkM6IEluaXRpYWwgU2NhbioqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgdG8gb3BlbiBhbmQgZXhhbWluZSBgYmNtc2RoLmNgLiBJIG5lZWQgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoaXMgZmlsZSBxdWlja2x5LiBHaXZlbiB0aGUgbmFtZSwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHJlbGF0ZWQgdG8gdGhlIEJyb2FkY29tIFNESCBpbnRlcmZhY2Ugb3IgYXNzb2NpYXRlZCBkcml2ZXJzLiBUaGF0J3MgbXkgc3RhcnRpbmcgYXNzdW1wdGlvbiwgYW55d2F5LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5NeSBpbml0aWFsIHNjYW4gd2lsbCBpbnZvbHZlOlxuXG4qICAgKipIZWFkZXIgaW5jbHVzaW9ucyoqOiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlcywgb2J2aW91c2x5LCBidXQgYWxzbyBzcGVjaWZpYyBvbmVzIHRoYXQgaGludCBhdCB0aGUgaGFyZHdhcmUgb3IgbGlicmFyaWVzIGl0IGludGVyYWN0cyB3aXRoIChlLmcuIEJyb2FkY29tIFNESyBoZWFkZXJzLCBzcGVjaWZpYyBTREggY2hpcHNldHMsIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcykuIFRoZXNlIGluY2x1c2lvbnMgZ2l2ZSBtZSBjb250ZXh0LlxuKiAgICoqR2xvYmFsIHZhcmlhYmxlcyBhbmQgc3RydWN0dXJlcyoqOiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgZGVmaW5lZCBhbmQgdXNlZCBoZXJlPyBBbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZXMgb3IgYnVmZmVycz8gVGhlc2Ugd2lsbCBwcm92aWRlIGhpbnRzIGFib3V0IGhvdyB0aGUgbW9kdWxlIG1hbmFnZXMgdGhlIFNESCBpbnRlcmZhY2UuIEknbSBzY2FubmluZyBmb3IgXCJpbnRlcmVzdGluZ1wiIG5hbWVzIHRvbzogYW55IG9idmlvdXMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBlcnJvciBjb2Rlcywgc3RhdGVzLCBldGMuIHRoYXQgZ2l2ZSBtZSBhIGNsZWFyZXIgaWRlYSBvZiB0aGUgbW9kdWxlJ3MgZnVuY3Rpb24uXG4qICAgKipGdW5jdGlvbiBwcm90b3R5cGVzKio6IEEgcXVpY2sgcmVhZCBvZiB0aGUgcHJvdG90eXBlcyB0ZWxscyBtZSB3aGljaCBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuIFRoaXMgZ2l2ZXMgYSBmaXJzdCBndWVzcyBhcyB0byB0aGUgbW9kdWxlJ3MgaW50ZW5kZWQgcm9sZS4gQXJlIHRoZXNlIGluaXRpYWxpemF0aW9uLCBkYXRhIHRyYW5zZmVyLCBjb250cm9sIG9yIGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9ucz9cbiogICAqKktleSBmdW5jdGlvbnMqKjogSWYgdGhlIHByZXZpb3VzIHN0ZXAgZGlkbid0IGdpdmUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhlIGZpbGUgZG9lcywgb3IgaWYgYSBzcGVjaWZpYyBmdW5jdGlvbiBuYW1lIGNhdGNoZXMgbXkgZXllLCBJJ2xsIGdvIHN0cmFpZ2h0IHRvIGl0cyBkZWZpbml0aW9uIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCB3b3JrcyBhbmQgd2hhdCBpdCBkb2VzLlxuXG5JJ20gYWltaW5nIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGlzIGZpbGUncyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIGNsdWVzIHRvIHRoZSBzcGVjaWZpYyBTREgtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IHRoaXMgY29kZSBwcm92aWRlcy4gU28sIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAyMywiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjAzLjcyNjc5MDA4NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxODg1NjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUkNNRl9GV1ZFTkRPUl9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYz05MDA9aW50IGJyY21mX3NkaW9kX3Byb2JlKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NjgtXFx0XFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQlJPQURDT00sIGRldl9pZCksIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6OTY5OlxcdFxcdC5kcml2ZXJfZGF0YSA9IEJSQ01GX0ZXVkVORE9SXyAjIyBmd192ZW5kIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtOTcwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NzQtXFx0XFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo5NzU6XFx0XFx0LmRyaXZlcl9kYXRhID0gQlJDTUZfRldWRU5ET1JfICMjIGZ3X3ZlbmQgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NzYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NTowNS42NDU2NjQxMjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY4ODIwODk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIENvZGU6IFBpbnBvaW50aW5nIHRoZSBBcmVhIG9mIEludGVyZXN0KipcblxuT2theSwgc28gSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZy4gQmFzZWQgb24gdGhlIGNvbnRleHQgKHdoaWNoIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIGxhY2sgb2Ygc3BlY2lmaWMgZGV0YWlscyBpbiB0aGUgcHJvbXB0ISksIGl0IHNvdW5kcyBsaWtlIHRoZXJlJ3MgYW4gaXNzdWUgb3Igc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgbXkgYXR0ZW50aW9uIHdpdGhpbiB0aGUgYGJjbXNkaC5jYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgbWVudGFsIG1vZGVsIG9mIHdoZXJlIHBvdGVudGlhbCBwcm9ibGVtcyBvciByZWxldmFudCBmdW5jdGlvbmFsaXR5IG1pZ2h0IHJlc2lkZSB3aXRoaW4gdGhhdCBtb2R1bGUuIE15IGluaXRpYWwgc3RyYXRlZ3kgaXMgdG8gemVybyBpbiBvbiBsaW5lIDk2OC4gVGhhdCBzcGVjaWZpYyBsaW5lIG51bWJlciBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gYXJvdW5kIHRoYXQgYXJlYSB0byBnZXQgYSBmZWVsIGZvciB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdW5kZXJzdGFuZCBpdHMgaW1tZWRpYXRlIGNvbnRleHQuIEhvcGVmdWxseSwgbGluZSA5NjggaXMgaW4gYSBmdW5jdGlvbiwgbG9vcCwgb3IgYmxvY2sgdGhhdCByZWxhdGVzIHRvIHRoZSBwcm9ibGVtIGF0IGhhbmQsIG9yIHRoYXQgd2lsbCBwcm92aWRlIG1lIHdpdGggY2x1ZXMgYXMgdG8gd2hlcmUgaXQgaXMuIEknbGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMsIHZhcmlhYmxlIG5hbWVzLCBhbmQgY29udHJvbCBmbG93IHRoYXQgcHJvdmlkZSBjbHVlcy4gSWYgbGluZSA5NjggaXRzZWxmIGRvZXNuJ3QgeWllbGQgaW1tZWRpYXRlIGFuc3dlcnMsIEknbGwgYmUgcHJlcGFyZWQgdG8gZXhwYW5kIG15IHNlYXJjaCB3aXRoaW4gdGhlIHN1cnJvdW5kaW5nIGJsb2NrcyBvZiBjb2RlIGFib3ZlIGFuZCBiZWxvdyB0aGF0IGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODU0LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MTEuMzMzODc2MjI1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDk0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk2MDpcXHRcXHRpZiAocmV0KVxcbiA5NjE6XFx0XFx0XFx0YnJjbWZfc2Rpb2RfcmVtb3ZlKHNkaW9kZXYpO1xcbiA5NjI6XFx0XFxuIDk2MzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA5NjQ6XFx0fVxcbiA5NjU6XFx0XFxuIDk2NjpcXHQjZGVmaW5lIEJSQ01GX1NESU9fREVWSUNFKGRldl9pZCwgZndfdmVuZCkgXFxcXFxcbiA5Njc6XFx0XFx0eyBcXFxcXFxuIDk2ODpcXHRcXHRcXHRTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcXFxcbiA5Njk6XFx0XFx0XFx0LmRyaXZlcl9kYXRhID0gQlJDTUZfRldWRU5ET1JfICMjIGZ3X3ZlbmQgXFxcXFxcbiA5NzA6XFx0XFx0fVxcbiA5NzE6XFx0XFxuIDk3MjpcXHQjZGVmaW5lIENZV19TRElPX0RFVklDRShkZXZfaWQsIGZ3X3ZlbmQpIFxcXFxcXG4gOTczOlxcdFxcdHsgXFxcXFxcbiA5NzQ6XFx0XFx0XFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbiA5NzU6XFx0XFx0XFx0LmRyaXZlcl9kYXRhID0gQlJDTUZfRldWRU5ET1JfICMjIGZ3X3ZlbmQgXFxcXFxcbiA5NzY6XFx0XFx0fVxcbiA5Nzc6XFx0XFxuIDk3ODpcXHQvKiBkZXZpY2VzIHdlIHN1cHBvcnQsIG51bGwgdGVybWluYXRlZCAqL1xcbiA5Nzk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBicmNtZl9zZG1tY19pZHNbXSA9IHtcXG4gOTgwOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMTQzLCBXQ0MpLFxcbiA5ODE6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMyNDEsIFdDQyksXFxuIDk4MjpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzI5LCBXQ0MpLFxcbiA5ODM6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzMCwgV0NDKSxcXG4gOTg0OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQsIFdDQyksXFxuIDk4NTpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM0MCwgV0NDKSxcXG4gOTg2OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQxLCBXQ0MpLFxcbiA5ODc6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzNjIsIFdDQyksXFxuIDk4ODpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM2NCwgV0NDKSxcXG4gOTg5OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzVfNDMzOSwgV0NDKSxcXG4gOTkwOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzksIFdDQyksXFxuIDk5MTpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzQzMCwgV0NDKSxcXG4gOTkyOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDM5LCBXQ0MpLFxcbiA5OTM6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM0NSwgV0NDKSxcXG4gOTk0OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDU1LCBXQ0MpLFxcbiA5OTU6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM1NCwgV0NDKSxcXG4gOTk2OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNTYsIFdDQyksXFxuIDk5NzpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzU5LCBXQ0MpLFxcbiA5OTg6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM3NTEsIFdDQyksXFxuIDk5OTpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80Mzc1MiwgV0NDKSxcXG4xMDAwOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM3MywgQ1lXKSxcXG4xMDAxOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDMwMTIsIENZVyksXFxuMTAwMjpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV9DWVBSRVNTXzg5MzU5LCBDWVcpLFxcbjEwMDM6XFx0XFx0Q1lXX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM0MzksIENZVyksXFxuMTAwNDpcXHRcXHR7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9XFxuMTAwNTpcXHR9O1xcbjEwMDY6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShzZGlvLCBicmNtZl9zZG1tY19pZHMpO1xcbjEwMDc6XFx0XFxuMTAwODpcXHRcXG4xMDA5OlxcdHN0YXRpYyB2b2lkIGJyY21mX3NkaW9kX2FjcGlfc2F2ZV9wb3dlcl9tYW5hZ2VhYmxlKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MTEuMzM1Nzg4OTM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzODU2NjU1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0RJTyBGdXp6aW5nIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgQlJDTUZfU0RJT19ERVZJQ0VgIHRoaW5nLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSB1c2luZyBgQ1lXYC4gUmlnaHQsIGBDWVdgIGlzIGJlaW5nIHJlYWNoZWQgdGhyb3VnaCBTRElPLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcgdGhpcy4gQ2FuIHdlIGZ1enogU0RJTz8gSSd2ZSBnb3QgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBoZXJlLiBJIGtub3cgU3l6a2FsbGVyIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgKmdlbmVyaWMqIFNESU8gZnV6emVyLiBIb2xkIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrLi4uIG5vLCBkZWZpbml0ZWx5IG5vIGJ1aWx0LWluLCBnZW5lcmljIFNESU8gZnV6emluZyBpbiBTeXprYWxsZXIuIEhtbS4gV2FpdCBhIG1pbnV0ZeKApiBXaGF0IGFib3V0IHRoZSBgcGNpZS5jYCBmdXp6aW5nIG1vZHVsZXM/IENvdWxkIHRoZXJlIGJlIGFuIGFwcHJvYWNoIHRvIGJ1aWxkIGZyb20gdGhhdD8gSSBuZWVkIHRvIGV4cGxvcmUgdGhpcyByb3V0ZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ3MCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjE5LjcyMTQ1ODI1MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDEwOlxcdFxcdEJSQ01GX0RSVkRBVEFfQ1lXLFxcbjI0MTE6XFx0XFx0QlJDTUZfRFJWREFUQV9CQ0EsXFxuMjQxMjpcXHRcXHRCUkNNRl9EUlZEQVRBX1dDQyxcXG4yNDEzOlxcdFxcdEJSQ01GX0RSVkRBVEFfV0NDX1NFRUQsXFxuMjQxNDpcXHR9O1xcbjI0MTU6XFx0XFxuMjQxNjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7XFxuMjQxNzpcXHRcXHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xcbjI0MTg6XFx0XFx0XFx0LnZlbmRvciA9IEJSQ01GX0ZXVkVORE9SX0NZVyxcXG4yNDE5OlxcdFxcdFxcdC5md19zZWVkID0gZmFsc2UsXFxuMjQyMDpcXHRcXHR9LFxcbjI0MjE6XFx0XFx0W0JSQ01GX0RSVkRBVEFfQkNBXSA9IHtcXG4yNDIyOlxcdFxcdFxcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9CQ0EsXFxuMjQyMzpcXHRcXHRcXHQuZndfc2VlZCA9IGZhbHNlLFxcbjI0MjQ6XFx0XFx0fSxcXG4yNDI1OlxcdFxcdFtCUkNNRl9EUlZEQVRBX1dDQ10gPSB7XFxuMjQyNjpcXHRcXHRcXHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfV0NDLFxcbjI0Mjc6XFx0XFx0XFx0LmZ3X3NlZWQgPSBmYWxzZSxcXG4yNDI4OlxcdFxcdH0sXFxuMjQyOTpcXHRcXHRbQlJDTUZfRFJWREFUQV9XQ0NfU0VFRF0gPSB7XFxuMjQzMDpcXHRcXHRcXHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfV0NDLFxcbjI0MzE6XFx0XFx0XFx0LmZ3X3NlZWQgPSB0cnVlLFxcbjI0MzI6XFx0XFx0fSxcXG4yNDMzOlxcdH07XFxuMjQzNDpcXHRcXG4yNDM1OlxcdC8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHBjaV9tYXRjaF9pZCgpIGNhbGwgKi9cXG4yNDM2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW107XFxuMjQzNzpcXHRcXG4yNDM4OlxcdHN0YXRpYyBpbnRcXG4yNDM5OlxcdGJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4yNDQwOlxcdHtcXG4yNDQxOlxcdFxcdGludCByZXQ7XFxuMjQ0MjpcXHRcXHRzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXE7XFxuMjQ0MzpcXHRcXHRzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvO1xcbjI0NDQ6XFx0XFx0c3RydWN0IGJyY21mX3BjaWVkZXYgKnBjaWVfYnVzX2RldjtcXG4yNDQ1OlxcdFxcdHN0cnVjdCBicmNtZl9jb3JlICpjb3JlO1xcbjI0NDY6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzO1xcbjI0NDc6XFx0XFxuMjQ0ODpcXHRcXHRpZiAoIWlkKSB7XFxuMjQ0OTpcXHRcXHRcXHRpZCA9IHBjaV9tYXRjaF9pZChicmNtZl9wY2llX2RldmlkX3RhYmxlLCBwZGV2KTtcXG4yNDUwOlxcdFxcdFxcdGlmICghaWQpIHtcXG4yNDUxOlxcdFxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcIkVycm9yIGNvdWxkIG5vdCBmaW5kIHBjaV9kZXZpY2VfaWQgZm9yICV4OiV4XFxcXG5cXFwiLCBwZGV2LVxcdTAwM2V2ZW5kb3IsIHBkZXYtXFx1MDAzZWRldmljZSk7XFxuMjQ1MjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yNDUzOlxcdFxcdFxcdH1cXG4yNDU0OlxcdFxcdH1cXG4yNDU1OlxcdFxcbjI0NTY6XFx0XFx0YnJjbWZfZGJnKFBDSUUsIFxcXCJFbnRlciAleDoleFxcXFxuXFxcIiwgcGRldi1cXHUwMDNldmVuZG9yLCBwZGV2LVxcdTAwM2VkZXZpY2UpO1xcbjI0NTc6XFx0XFxuMjQ1ODpcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjI0NTk6XFx0XFx0ZGV2aW5mbyA9IGt6YWxsb2Nfb2JqKCpkZXZpbmZvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MTkuNzIyMDQ5ODExWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjI5MzA2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBgYnJjbWZfcGNpZV9kZXZpZF90YWJsZWAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpcyBgYnJjbWZfcGNpZV9kZXZpZF90YWJsZWDigKYgaW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIHRvIGNodXJuIG9uIHdoYXQgdGhpcyBsaWtlbHkgcmVwcmVzZW50cy4gQmFzZWQgb24gdGhlIG5hbWUsIGl0J3MgcHJldHR5IGNsZWFyOiBpdCdzIGEgdGFibGUsIHdoaWNoIG1lYW5zIGEgc3RydWN0dXJlZCBkYXRhIHNldC4gVGhlIGBicmNtZmAgcGFydCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyByZWxhdGVkIHRvIEJyb2FkY29tIFdpLUZpIGRyaXZlcnMsIGFuZCBgcGNpZWAgb2YgY291cnNlLCBpbmRpY2F0ZXMgaXQgY29uY2VybnMgdGhlIFBDSSBFeHByZXNzIGludGVyZmFjZS4gVGhlIGBkZXZpZGAgc3VnZ2VzdHMgaXQncyBsaWtlbHkgYSBsaXN0IG9mIGRldmljZSBJRHMuXG5cbk15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgdGFibGUgaXMgdGhlIGNvcmUgb2YgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyBhbmQgc3VwcG9ydHMgZGlmZmVyZW50IEJyb2FkY29tIFBDSWUgV2ktRmkgZGV2aWNlcy4gSXQncyBwcm9iYWJseSB0aGUgY3J1Y2lhbCBsb29rdXAgbWVjaGFuaXNtLiBXaXRob3V0IGl0LCB0aGUgZHJpdmVyIHdvdWxkbid0IGtub3cgaG93IHRvIGludGVyZmFjZSB3aXRoIHNwZWNpZmljIGhhcmR3YXJlLiBJJ20gaW1hZ2luaW5nIHJvd3Mgb3IgZW50cmllcywgZWFjaCB0aWVkIHRvIGEgcGFydGljdWxhciBkZXZpY2UsIHBlcmhhcHMgd2l0aCB2ZW5kb3IgYW5kIGRldmljZSBJRHMgYXMgdGhlIGtleXMuXG5cbkknbSBzdGFydGluZyB0byB0aGluayBhYm91dCB3aGF0IG90aGVyIGZpZWxkcyBtaWdodCBiZSBpbiBlYWNoIGVudHJ5LiBCZXlvbmQgdGhlIGRldmljZSBJRCwgdGhlcmUncyBsaWtlbHkgdG8gYmUgaW5mb3JtYXRpb24gdG8gZGVzY3JpYmUgdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcywgc3BlY2lmaWMgZHJpdmVyIGxvYWRpbmcgaW5zdHJ1Y3Rpb25zLCBvciBtYXliZSBldmVuIGZpcm13YXJlIGluZm9ybWF0aW9uLiBDb3VsZCBpdCBkaWN0YXRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBwb3dlciBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMsIG9yIGV2ZW4gd2hpY2ggZmlybXdhcmUgZmlsZSB0byBsb2FkIGZvciBhIGdpdmVuIGRldmljZT8gRGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHRoZXJlIG1pZ2h0IGV2ZW4gYmUgcG9pbnRlciB0byBkYXRhIHN0cnVjdHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMgc3BlY2lmaWMgdG8gZWFjaCBkZXZpY2UuIEl0J3MgZXNzZW50aWFsbHkgdGhlIGJyaWRnZSBiZXR3ZWVuIHRoZSBnZW5lcmljIGRyaXZlciBhbmQgdGhlIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5JJ20gbm93IHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIHRhYmxlIHdvdWxkIGJlIG9yZ2FuaXplZCB3aXRoaW4gdGhlIGRyaXZlcidzIGNvZGU6IElzIGl0IGEgc3RhdGljIGFycmF5IGNvbXBpbGVkIGludG8gdGhlIGRyaXZlciwgb3IgaXMgaXQgbG9hZGVkIGR5bmFtaWNhbGx5PyBIb3cgaXMgaXQgYWNjZXNzZWQ/IElzIGl0IG9wdGltaXplZCBmb3IgZmFzdCBsb29rdXBzLCBwZXJoYXBzIHVzaW5nIGEgaGFzaCB0YWJsZSBvciBhIGJpbmFyeSBzZWFyY2ggaWYgdGhlIGRldmljZSBJRHMgYXJlIHNvcnRlZD8gQWxzbywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgdGFibGUncyBzaXplPyBEb2VzIGl0IHNjYWxlIHdlbGwgdG8gbmV3IEJyb2FkY29tIGRldmljZXMsIG9yIGlzIGl0IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIHJlZ3VsYXJseSB1cGRhdGVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxODYxNSwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MjQuMzg0OTg0NjU4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDQwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNjgwOlxcdFxcdFxcdGJyY21mX3BjaWVfZndjb25fdGltZXIoZGV2aW5mbywgdHJ1ZSk7XFxuMjY4MTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4yNjgyOlxcdFxcdH1cXG4yNjgzOlxcdFxcbjI2ODQ6XFx0Y2xlYW51cDpcXG4yNjg1OlxcdFxcdGJyY21mX2NoaXBfZGV0YWNoKGRldmluZm8tXFx1MDAzZWNpKTtcXG4yNjg2OlxcdFxcdGRldmluZm8tXFx1MDAzZWNpID0gTlVMTDtcXG4yNjg3OlxcdFxcdHBkZXYgPSBkZXZpbmZvLVxcdTAwM2VwZGV2O1xcbjI2ODg6XFx0XFx0YnJjbWZfcGNpZV9yZW1vdmUocGRldik7XFxuMjY4OTpcXHRcXG4yNjkwOlxcdFxcdGVyciA9IGJyY21mX3BjaWVfcHJvYmUocGRldiwgTlVMTCk7XFxuMjY5MTpcXHRcXHRpZiAoZXJyKVxcbjI2OTI6XFx0XFx0XFx0X19icmNtZl9lcnIoTlVMTCwgX19mdW5jX18sIFxcXCJwcm9iZSBhZnRlciByZXN1bWUgZmFpbGVkLCBlcnI9JWRcXFxcblxcXCIsIGVycik7XFxuMjY5MzpcXHRcXG4yNjk0OlxcdFxcdHJldHVybiBlcnI7XFxuMjY5NTpcXHR9XFxuMjY5NjpcXHRcXG4yNjk3OlxcdFxcbjI2OTg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtID0ge1xcbjI2OTk6XFx0XFx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxcbjI3MDA6XFx0XFx0LnJlc3VtZSA9IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMsXFxuMjcwMTpcXHRcXHQuZnJlZXplID0gYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyxcXG4yNzAyOlxcdFxcdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcXG4yNzAzOlxcdH07XFxuMjcwNDpcXHRcXG4yNzA1OlxcdFxcbjI3MDY6XFx0I2VuZGlmIC8qIENPTkZJR19QTSAqL1xcbjI3MDc6XFx0XFxuMjcwODpcXHRcXG4yNzA5OlxcdCNkZWZpbmUgQlJDTUZfUENJRV9ERVZJQ0UoZGV2X2lkLCBmd192ZW5kKSBcXFxcXFxuMjcxMDpcXHRcXHR7IFxcXFxcXG4yNzExOlxcdFxcdFxcdFBDSV9ERVZJQ0UoQlJDTV9QQ0lFX1ZFTkRPUl9JRF9CUk9BRENPTSwgKGRldl9pZCkpLCBcXFxcXFxuMjcxMjpcXHRcXHRcXHQuY2xhc3MgPSBQQ0lfQ0xBU1NfTkVUV09SS19PVEhFUiBcXHUwMDNjXFx1MDAzYyA4LCBcXFxcXFxuMjcxMzpcXHRcXHRcXHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxcXFxuMjcxNDpcXHRcXHRcXHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxcXFxuMjcxNTpcXHRcXHR9XFxuMjcxNjpcXHQjZGVmaW5lIEJSQ01GX1BDSUVfREVWSUNFX1NVQihkZXZfaWQsIHN1YnZlbmQsIHN1YmRldiwgZndfdmVuZCkgXFxcXFxcbjI3MTc6XFx0XFx0eyBcXFxcXFxuMjcxODpcXHRcXHRcXHRQQ0lfREVWSUNFX1NVQihCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAoZGV2X2lkKSwgXFxcXFxcbjI3MTk6XFx0XFx0XFx0XFx0ICAgICAgIChzdWJ2ZW5kKSwgKHN1YmRldikpLCBcXFxcXFxuMjcyMDpcXHRcXHRcXHQuY2xhc3MgPSBQQ0lfQ0xBU1NfTkVUV09SS19PVEhFUiBcXHUwMDNjXFx1MDAzYyA4LCBcXFxcXFxuMjcyMTpcXHRcXHRcXHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxcXFxuMjcyMjpcXHRcXHRcXHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxcXFxuMjcyMzpcXHRcXHR9XFxuMjcyNDpcXHRcXG4yNzI1OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW10gPSB7XFxuMjcyNjpcXHRcXHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1MF9ERVZJQ0VfSUQsIFdDQyksXFxuMjcyNzpcXHRcXHRCUkNNRl9QQ0lFX0RFVklDRV9TVUIoMHg0MzU1LCBCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAweDQzNTUsIFdDQyksXFxuMjcyODpcXHRcXHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1NF9SQVdfREVWSUNFX0lELCBXQ0MpLFxcbjI3Mjk6XFx0XFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTVfREVWSUNFX0lELCBXQ0NfU0VFRCksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjI0LjM4ODYzNTEwOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIxNTQzMzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBMaW51eCBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqRGVlcCBEaXZlOiBFeHBsb3JpbmcgdGhlIGJyY21mX3BjaWVfZGV2aWRfdGFibGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGBDWVdgIGlzIGFjdHVhbGx5IHJlZmVyZW5jZWQgYW55d2hlcmUgd2l0aGluIHRoZSBgYnJjbWZfcGNpZV9kZXZpZF90YWJsZWAuIFRoaXMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEJyb2FkY29tJ3MgV2lGaSBkcml2ZXIsIGBicmNtZl9wY2llYCwgaGFuZGxlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIFNwZWNpZmljYWxseSwgSSBzdXNwZWN0IGBDWVdgIHJlZmVycyB0byBhIHNwZWNpZmljIEJyb2FkY29tIGNoaXBzZXQgZmFtaWx5LCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIGRyaXZlciBrbm93cyBhYm91dCBpdC4gSSdtIHRoaW5raW5nIGFib3V0IGRyaXZlciBjb21wYXRpYmlsaXR5IGFuZCB0aGUgcG90ZW50aWFsIG5lZWQgZm9yIHNvbWUga2luZCBvZiBkZXZpY2Utc3BlY2lmaWMgaGFuZGxpbmcuIEVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIGhhcmR3YXJlJ3MgY2FwYWJpbGl0aWVzIGFuZCB0aGUgc29mdHdhcmUncyBhd2FyZW5lc3MuIElzIHRoZSBkZXZpY2UgSUQgbWFwcGluZyBjb3JyZWN0PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvbWlzc2lvbnMgSSBuZWVkIHRvIGFkZHJlc3M/IERpZ2dpbmcgaW50byB0aGlzIHRhYmxlIGZlZWxzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA2MywiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MjguNzEwMTgyODk0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzAwNjU4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfUENJRV9ERVZJQ0UuKkNZV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjcyNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYnJjbWZfcGNpZV9kZXZpZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzQ4LVxcdEJSQ01GX1BDSUVfREVWSUNFKEJSQ01fUENJRV80MzcxX0RFVklDRV9JRCwgV0NDKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3NDk6XFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTk2X0RFVklDRV9JRCwgQ1lXKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI3NTAtXFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNzdfREVWSUNFX0lELCBXQ0NfU0VFRCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI3NTMtXFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNzUyX0RFVklDRV9JRCwgV0NDX1NFRUQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6Mjc1NDpcXHRCUkNNRl9QQ0lFX0RFVklDRShDWV9QQ0lFXzU0NTkxX0RFVklDRV9JRCwgQ1lXKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI3NTUtXFx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NToyOS4zNDAyNjA5MzVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODExMjE4NjY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQQ0llLCBGdXp6aW5nLCBhbmQgdGhlIGBicmNtZm1hY2AgRHJpdmVyOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIGBDWVdgIGlzIHRpZWQgdG8gUENJZSBkZXZpY2VzLCBpbnRlcmVzdGluZy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IGZ1enogUENJZSBkZXZpY2VzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgKmdlbmVyaWMqIFBDSWUgZnV6emVyIG91dCBvZiB0aGUgYm94LiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgaXQgbWlnaHQgZnV6eiBQQ0kgZGV2aWNlcyB2aWEgYHZmaW9gIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJ3QgbmF0aXZlbHkgZnV6eiBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhlcmUgaXMgYSBkZWRpY2F0ZWQgZnV6emVyLCBsaWtlIHdpdGggcHNldWRvLXN5c2NhbGxzIHN1Y2ggYXMgYHN5el9wY2lfLi4uYC4gV2FpdCBhIG1pbnV0ZSwgZG9lc24ndCBTeXprYWxsZXIgaGF2ZSBgc3l6X3BjaV8uLi5gPyBObywgdGhhdCdzIG5vdCByaWdodC4gSXQgZG9lcyB0aGluZ3MgbGlrZSBVU0Igd2l0aCBgZHVtbXlfaGNkYCBhbmQgYmx1ZXRvb3RoIHdpdGggYHZoY2lgLCBidXQgbm90aGluZyBnZW5lcmljIGZvciBQQ0kgZGlyZWN0bHksIGl0IGRvZXNuJ3QgYXBwZWFyLlxuXG5BaCwgYnV0IHdhaXQsIHRoZXJlIGlzIGBzeXpfa3ZtX3NldHVwX2NwdWAgd2hpY2ggbWlnaHQgb3BlbiBhIGRvb3IgZm9yIHNvbWUgUENJIGZ1enppbmcgdGhyb3VnaCBRRU1VLiBIb3dldmVyLCBQQ0kgZHJpdmVycyBhcmUgdXN1YWxseSBoYXJkIHRvIGZ1enogdW5sZXNzIHZpcnR1YWxpemVkIChsaWtlIHZpcnRpbykgb3Igc3BlY2lmaWNhbGx5IHRhcmdldGVkIGJ5IGEgU3l6a2FsbGVyIFBDSSBmdXp6ZXIsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIFN5emthbGxlciBpcyBhIGJpdCBsaWdodCBoZXJlLiBXYWl0LCBJIHRob3VnaHQgdGhlcmUgd2VyZSBgc3l6X3BjaV8uLi5gc3lzY2FsbHM/IE5vLCBJJ20gdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVsc2UuXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgYG1hYzgwMjExX2h3c2ltYC4gVGhhdCdzIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIG1hYzgwMjExLCByaWdodD8gVGhlbiB3ZSdyZSBsb29raW5nIGF0IGBicmNtZm1hY2AsIHdoaWNoIGlzIGEgRnVsbE1BQyBkcml2ZXIsIHdoaWNoIHVzZXMgYGNmZzgwMjExYCwgbm90IGBtYWM4MDIxMWAuIEl0IGNvbW11bmljYXRlcyB3aXRoIHRoZSBmaXJtd2FyZSwgdGhhdCdzIGEga2V5IGRpc3RpbmN0aW9uLlxuXG5JZiBgYnJjbWZtYWNgIGl0c2VsZiBpc24ndCBmdXp6YWJsZSwgSSBuZWVkIHRvIGRlY2lkZSBpZiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IG1vdmUuIEkgbmVlZCB0byBjb25zaWRlciwgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBUaGF0IGxpbmUgb2YgdGhpbmtpbmcgaXMgaW1wb3J0YW50LlxuXG5Ob3csIGBicmNtZm1hY2AgZG9lcyBoYXZlIFVTQiBzdXBwb3J0LCBidXQgYENZV2AgaXMgc3BlY2lmaWNhbGx5IGZvciBTRElPIGFuZCBQQ0llLCBub3QgVVNCLiBXYWl0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGF0IGBDWVdgIGlzbid0IHVzZWQgaW4gVVNCIGF0IGFsbC4gV2UgY2hlY2tlZCBlYXJsaWVyLCBidXQgaXQncyB3b3J0aCBhIHNlY29uZCBsb29rIGF0IGB1c2IuY2AgdG8gY29uZmlybSB0aGF0IGBCUkNNRl9GV1ZFTkRPUl9DWVdgIGRvZXNuJ3QgYXBwZWFyIHRoZXJlLiBKdXN0IHdhbnQgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MDIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MzcuNDUyNDUxMjE5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDg5NzMyNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNZV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjM4LjEwMTQ0MDk1N1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTA0OTY5Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEJyb2FkY29tIFdpLUZpIEZpcm13YXJlIFBhdGhzIGluIFVTQiB2cy4gT3RoZXIgSW50ZXJmYWNlcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgQ1lXYCB0aGluZywgc3BlY2lmaWNhbGx5IGl0cyB1c2UgKG9yIGxhY2sgdGhlcmVvZikgaW4gYHVzYi5jYC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQncyAqbm90KiB1c2VkIGluIHRoZSBVU0IgaW1wbGVtZW50YXRpb24uIEJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIFdoYXQgaWYgSSBtaXNzZWQgc29tZXRoaW5nPyBJIGJldHRlciBjaGVjayBpZiBgQlJDTUZfRldWRU5ET1JfQ1lXYCBhcHBlYXJzICphbnl3aGVyZSogaW4gYHVzYi5jYC4gT2theSwgSSBqdXN0IGdyZXBwZWQgZm9yIGBCUkNNRl9GV1ZFTkRPUl9gIHdpdGhpbiBgdXNiLmNgIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSBvbmx5IGBCUkNNRl9GV1ZFTkRPUl9XQ0NgIGlzIHByZXNlbnQuIFRoYXQgY29uZmlybXMgaXQsIHRoZSBVU0IgZGV2aWNlcyBhcmUgaW5kZWVkIHVzaW5nIHRoZSBgV0NDYCBwYXRoLCBub3QgdGhlIGBDWVdgIHBhdGguXG5cblRoaXMgbWVhbnMgdGhlIGBDWVdgIHZlbmRvciBmaXJtd2FyZSBpcyB1c2VkIGJ5IFNESU8gYW5kIFBDSWUgZGV2aWNlcy4gR2l2ZW4gdGhhdCBJIGNhbid0IHRoaW5rIG9mIGFueSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGZ1enogU0RJTyBvciBQQ0llIGludGVyZmFjZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgdW5sZXNzLCBvZiBjb3Vyc2UsIGEgdmVyeSBzcGVjaWZpYyBCcm9hZGNvbSBTRElPL1BDSWUgV2ktRmkgZW11bGF0b3IgZXhpc3RzLCB3aGljaCBhcyBmYXIgYXMgSSBrbm93LCBpdCBkb2Vzbid0IOKAkyBJJ20gdGhpbmtpbmcgdGhlc2UgY29kZSBwYXRocyBhcmUgYmFzaWNhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC5cblxuTm93LCB3YWl0IGEgc2VjLiBDYW4gUUVNVSBkbyBCcm9hZGNvbSBQQ0llIFdpLUZpIGVtdWxhdGlvbj8gTm9wZS4gV2hhdCBhYm91dCBCcm9hZGNvbSBTRElPIFdpLUZpPyBBbHNvIG5vLiBTbywgaW4gZWZmZWN0LCBmdW5jdGlvbnMgbGlrZSBgYnJjbWZfY3l3X21nbXRfdHhgIGFuZCBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIHdvdWxkIGJlIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGlmIEknbSBydW5uaW5nIHRoaXMgdGhpbmcgaW5zaWRlIGEgdmlydHVhbCBtYWNoaW5lLiBUaGlzIGlzIGdvb2QgdG8ga25vdy4gQnV0LCBiZWZvcmUgSSBtYWtlIHRoaXMgYSBzb2xpZCBjb25jbHVzaW9uLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLiBJJ2xsIHRha2UgYSBsb29rIGF0IHdoZXJlIGBicmNtZl9jeXdfb3BzYCBpcyB1c2VkIGVsc2V3aGVyZSB0byBtYWtlIHN1cmUgaXQncyBub3QgcmVhY2hlZCB2aWEgc29tZSAqb3RoZXIqIHVuZXhwZWN0ZWQgbWVhbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODg0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjQ0LjIwNjQxNTA0NloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5OTE1ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0zNTg9c3RhdGljIHZvaWQgYnJjbWZfY3l3X3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MzcwOmNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzEtXFx0LnNldF9zYWVfcGFzc3dvcmQgPSBicmNtZl9jeXdfc2V0X3NhZV9wd2QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jPTEyPXN0YXRpYyBpbnQgX19pbml0IGJyY21mX2N5d19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE0LVxcdHJldHVybiBicmNtZl9md3ZpZF9yZWdpc3Rlcl92ZW5kb3IoQlJDTUZfRldWRU5ET1JfQ1lXLCBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE1OlxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZicmNtZl9jeXdfb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmg6ODpleHRlcm4gY29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oOjk6I2RlZmluZSBDWVdfVk9QU1xcdChcXHUwMDI2YnJjbWZfY3l3X29wcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC0xMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6NDQuNDU2MzM5NDIzWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDg5NjAxNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gQnJvYWRjb20gV2ktRmkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBgQlJDTUZfRldWRU5ET1JfQ1lXYC4gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQncyBzcGVjaWZpYyB0byBCcm9hZGNvbSdzIFdpLUZpIGNoaXBzLCBsaWtlbHkgdGhvc2UgY29ubmVjdGVkIHZpYSBTRElPIG9yIFBDSWUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlYWNoZWQuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXMgb25seSB1c2VkIGluIGBiY21zZGguY2AgKFNESU8pIGFuZCBgcGNpZS5jYCAoUENJZSkgZmlsZXMuXG5cbk5vdywgbXkgbWluZCBzdGFydHMgcmFjaW5nLiBJcyB0aGVyZSBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgdmlydHVhbGl6ZSBhbiBTRElPIG9yIFBDSWUgQnJvYWRjb20gZGV2aWNlPyBJIGNhbid0IHRoaW5rIG9mIGFueSBjb21tb24gc2V0dXAgbGlrZSB0aGF0LiBUeXBpY2FsbHksIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB5b3UncmUgbm90IGdvaW5nIHRvIGJlIGVtdWxhdGluZyB0aGVzZSBzcGVjaWZpYyBCcm9hZGNvbSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUgcGFzc3Rocm91Z2gsIHJpZ2h0P1xuXG5BbHJpZ2h0LCBsZXQncyBleHBsb3JlIG90aGVyIGF2ZW51ZXMuIENvdWxkIGBtYWM4MDIxMV9od3NpbWAgYmUgaW52b2x2ZWQgc29tZWhvdz8gTm8sIHdhaXQsIHRoYXQncyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBgbWFjODAyMTFfaHdzaW0uY2AsIGFuZCBpdCBkb2Vzbid0IHVzZSBgYnJjbWZtYWNgLiAgV2hhdCBhYm91dCBgY2ZnODAyMTFgPyBBaCwgdGhhdCdzIHRoZSBnZW5lcmljIHN1YnN5c3RlbS4gQnV0IGV2ZW4gdGhhdCBvbmx5IGludGVyYWN0cyB3aXRoIGBicmNtZm1hY2AgaWYgdGhlIGRyaXZlciBpcyBsb2FkZWQgKmFuZCogYSBkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gQW5kIHNpbmNlIHdlIGNhbid0IHByb2JlIGEgQnJvYWRjb20gU0RJTyBvciBQQ0llIGRldmljZSBpbiBRRU1VL0dDRSwgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgc3VjY2VlZC4gVGhlIGRldmljZSB3aWxsIG5ldmVyIHJlZ2lzdGVyIHdpdGggYGNmZzgwMjExYC4gU28sIGl0IHNlZW1zIGxpa2UgYGJyY21mX2N5d19tZ210X3R4YCBhbmQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCAqYXJlKiB1bnJlYWNoYWJsZSB1bmRlciB0eXBpY2FsIGNpcmN1bXN0YW5jZXMuXG5cbk9rYXksIGxldCBtZSBwaXZvdC4gSSB3b25kZXIgaWYgc3l6a2FsbGVyIGNvdWxkIGJlIHVzZWQgaGVyZT8gSSBoYXZlIHRvIHJlbWVtYmVyIGlmIEkgc2F3IGFueSBQQ0kgZnV6emluZyBpbiBzeXprYWxsZXIuIEkga25vdyBzb21lIGZvcmtzIG1pZ2h0IGhhdmUgYHN5el9wY2lfLi4uYCBwc2V1ZG8tc3lzY2FsbHMuIEJ1dCB0aGUgdXBzdHJlYW0gdmVyc2lvbiBkb2VzbuKAmXQgaGF2ZSBhIGdlbmVyYWwgUENJIGZ1enplciB0aGF0IGNhbiBmdWxseSBlbXVsYXRlIFBDSSBkZXZpY2VzLCBkb2VzIGl0PyBXYWl0LCBoYXMgdGhlcmUgYmVlbiBhbnkgcmVjZW50IGRldmVsb3BtZW50IG9uIFBDSSBmdXp6aW5nIHdpdGggYHZmaW9gIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHNob3VsZCBjaGVjayBpZiB0aGVyZeKAmXMgYSBgQ09ORklHX1BDSWAgb3Igc2ltaWxhciBjb25maWd1cmF0aW9uIGludm9sdmVkLi4uXG5cbkV2ZW4gaWYgdGhlcmUgaXMgUENJIGZ1enppbmcsIGRvZXMgaXQgZW11bGF0ZSAqQnJvYWRjb20qIFdpLUZpPyBQcm9iYWJseSBub3QuIFVzdWFsbHksIFBDSSBmdXp6aW5nIGluamVjdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMsIGJ1dCB0aGlzIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgYm91bmQgdG8gYSB2aXJ0dWFsIGRldmljZS4gSSBkb27igJl0IHRoaW5rIHRoZXJlIGlzIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGVtdWxhdG9yIHdpdGhpbiBzeXprYWxsZXIuXG5cbkxldCdzIHNlZeKApnN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAgZm9yIFVTQi4uLiBidXQgZm9yIFBDSSwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgc2ltaWxhcj8gTGlrZSwgYHN5el9wY2lfZGV2aWNlX2FkZGA/IE5vLCBubyBzdWNoIGx1Y2suIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIFBDSSBkZXZpY2UgZW11bGF0b3IuIFdoYXQgYWJvdXQgYHZoY2lgPyBUaGF04oCZcyBmb3IgQmx1ZXRvb3RoLCBub3QgcmVsZXZhbnQgaGVyZS4gQW5kIGBtYWM4MDIxMV9od3NpbWAgaXMgZm9yIFdpLUZpLCBidXQgZG9lc24ndCBpbnRlcmFjdCB3aXRoIHRoZSBzYW1lIGRyaXZlci4gU28sIGBicmNtZm1hY2AgaXMgZ2VuZXJhbGx5IG5vdCBmdXp6YWJsZSB1bmxlc3MgaXTigJlzIFVTQi4gQW5kLCBzaW5jZSB0aGlzIGNvZGUgc3BlY2lmaWNhbGx5IGNvbmNlcm5zIGBDWVdgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIFNESU8gYW5kIFBDSWUgb25seSwgaXTigJlzICpkZWZpbml0ZWx5KiBub3QgZnV6emFibGUuXG5cbk9rYXksIGJhY2sgdG8gdGhlIHBhdGNoLiBJIG5lZWQgdG8gcmV2aWV3IHRoaXMgY29kZSBhZ2Fpbi4gICpTY2FucyB0aGUgY29kZSogIEhtbSwgaXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgaXQncyBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgYSBidXMgdHlwZSAoU0RJTy9QQ0llKSB0aGF0IGlzIG5vdCBnZW5lcmFsbHkgZW11bGF0ZWQuXG5cbk9uZSBsYXN0IGNoZWNrLCBJJ20ganVzdCBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgaW5pdGlhbCBhc3N1bXB0aW9uOiBpcyBgQlJDTUZfRldWRU5ET1JfQ1lXYCAqcmVhbGx5KiBvbmx5IHVzZWQgaW4gdGhvc2UgdHdvIGZpbGVzPyBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxNjUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6NTcuNTQ1OTQ2MTdaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzkxMTcwMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfRldWRU5ET1JfQ1lXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9MzQ9ZW51bSBicmNtZl9md3ZlbmRvciB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM1LVxcdEJSQ01GX0ZXVkVORE9SX1dDQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzY6XFx0QlJDTUZfRldWRU5ET1JfQ1lXLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zNy1cXHRCUkNNRl9GV1ZFTkRPUl9CQ0EsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0xOTU2PXN0YXRpYyBzMzIgYnJjbWZfc2V0X3dwYV92ZXJzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk2OC1cXHR9IGVsc2UgaWYgKHNtZS1cXHUwMDNlY3J5cHRvLndwYV92ZXJzaW9ucyBcXHUwMDI2IE5MODAyMTFfV1BBX1ZFUlNJT05fMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjE5Njk6XFx0XFx0aWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZnd2aWQgPT0gQlJDTUZfRldWRU5ET1JfQ1lXIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk3MC1cXHRcXHQgICAgc21lLVxcdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA9PSBXTEFOX0FLTV9TVUlURV9TQUUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jPTEyPXN0YXRpYyBpbnQgX19pbml0IGJyY21mX2N5d19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNDpcXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNS1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YnJjbWZfY3l3X29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jPTE4PXN0YXRpYyB2b2lkIF9fZXhpdCBicmNtZl9jeXdfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM6MjA6XFx0YnJjbWZfZnd2aWRfdW5yZWdpc3Rlcl92ZW5kb3IoQlJDTUZfRldWRU5ET1JfQ1lXLCBUSElTX01PRFVMRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0yMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI0MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjQxNy1cXHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjQxODpcXHRcXHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfQ1lXLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjQxOS1cXHRcXHQuZndfc2VlZCA9IGZhbHNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDM5PWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUzNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1MzY6XFx0Y2FzZSBCUkNNRl9GV1ZFTkRPUl9DWVc6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTM3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ2OjAzLjI4NTA3MTQ0MloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTU1MTgwODM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9RmFsc2U6IFVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgbW9kaWZpZWQgc2VjdGlvbiBpcyBvbmx5IHVzZWQgaW4gYHBjaWUuY2AgYW5kIGBiY21zZGguY2AsIGFuZCBsaWtlbHkgb25seSB0aHJvdWdoIG1hY3JvIGV4cGFuc2lvbi4gTXkgZmlyc3QgdGhvdWdodCB3YXMsIFwiQ291bGQgd2UgcG9zc2libHkgdHJpZ2dlciB0aGlzIHNvbWVob3cgdGhyb3VnaCBgY2ZnODAyMTFgIHdpdGhvdXQgdGhlIGRldmljZSBmdWxseSBwcm9iZWQ/XCIgQnV0IG5vLCB0aGF0IHdvbid0IHdvcmsuIGBjZmc4MDIxMWAgbmVlZHMgYSByZWdpc3RlcmVkIGB3aXBoeWAgZGV2aWNlLCB3aGljaCB0aGUgZHJpdmVyIGNyZWF0ZXMgZHVyaW5nIHByb2JlLiBJZiB0aGUgcHJvYmUgZmFpbHMgYmVjYXVzZSB0aGVyZSdzIG5vIGhhcmR3YXJlLCB0aGUgYHdpcGh5YCBpc24ndCByZWdpc3RlcmVkLCBhbmQgYGNmZzgwMjExYCB3b24ndCBrbm93IGFueXRoaW5nIGFib3V0IGl0LlxuXG5MZXQncyB0aGluayBpZiB0aGVyZSdzIGFueSBvdGhlciBhdmVudWUuIElzIHRoZXJlIGEgZHVtbXkgZHJpdmVyIGZvciBicmNtZm1hYz8gTm9wZS4gQ2FuIHdlIGluamVjdCBTRElPIGRldmljZXMgaW4gc3l6a2FsbGVyPyBOby4gUENJZT8gU3RpbGwgbm8uIFNvLCBpdCBzZWVtcyBsaWtlIHRoaXMgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkdpdmVuIHRoaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIE15IHJlYXNvbmluZyBpcyB0aGlzIGNvZGUgbW9kaWZpZXMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgQnJvYWRjb20gYnJjbWZtYWMsIGRlYWxpbmcgd2l0aCBTRElPIGFuZCBQQ0llIGJ1c2VzLiBUaGVzZSBidXMgdHlwZXMgY2Fubm90IGJlIGVtdWxhdGVkIG9yIGFjY2Vzc2VkIHdpdGhpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0J3Mgd29yZGluZzogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFllcCwgdGhhdCdzIGEgcGVyZmVjdCBmaXQuIFRoZSBzcGVjaWZpYyBjb2RlIGlzIHdpdGhpbiBgYnJjbWZtYWMvY3l3L2NvcmUuY2AsIHdoaWNoIHJlbGF0ZXMgdG8gdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yIGZpcm13YXJlIHZhcmlhbnQgb2YgdGhlIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyLiBUaGlzIENZVyB2YXJpYW50IGlzIHRpZWQgdG8gY2VydGFpbiBTRElPIGFuZCBQQ0llIGRldmljZSBJRHMuIFdlIGNhbid0IGVtdWxhdGUgdGhvc2UgYnVzZXMgd2l0aGluIHN0YW5kYXJkIHN5emthbGxlciBlbnZpcm9ubWVudHMuIFVubGlrZSBVU0IsIHdoZXJlIHdlIGNvdWxkIHVzZSBgZHVtbXlfaGNkYCBmb3IgZW11bGF0aW9uLlxuXG5KdXN0IHRvIGJlIDEwMCUgc3VyZSwgbGV0IG1lIHZlcmlmeSBhZ2FpbiBpZiB0aGUgYENZV2AgdmFyaWFudCBpcyBib3VuZCB0byBhbnkgVVNCIGRldmljZSBJRHMuIEkgY2hlY2tlZCBgdXNiLmNgIGFuZCB0aGUgY29kZSBvbmx5IHVzZXMgYEJSQ01GX0ZXVkVORE9SX1dDQ2AuIFdhaXQsIGxldCBtZSBjaGVjayB0aGUgYGJyY21mX3VzYl9kZXZpZF90YWJsZWAgb25lIG1vcmUgdGltZSwganVzdCBpbiBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjAyOCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NjoyNC44MzY4ODMwNzJaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTM1NjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDWVBSRVNTX1VTQl9ERVZJQ0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTExPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTQzOiNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQ0LVxcdHsgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1NDk9c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NTQtXFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU1NTpcXHRDWVBSRVNTX1VTQl9ERVZJQ0UoQ1lfVVNCXzQzNzNfREVWSUNFX0lEKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU1Ni1cXHR7IFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xHLCBCUkNNX1VTQl80MzI0Ml9MR19ERVZJQ0VfSUQpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU1OC1cXHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NTk6XFx0Q1lQUkVTU19VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NjAtXFx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NjoyNS41MzIyNTUyODNaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEwODI5MzI5NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQSBRdWljayBEb3VibGUtVGFrZSBvbiB0aGUgQ3lwcmVzcyBEZXZpY2UgSUQqKlxuXG5Ib2xkIG9uIGEgc2Vjb25kISBJIG5lZWQgdG8gcHJvY2VzcyB0aGlzLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGJlY2F1c2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgQ3lwcmVzcyBkZXZpY2UsIHRoZSBgQlJDTUZfRldWRU5ET1JfQ1lXYCBmaXJtd2FyZSB2ZW5kb3IgSUQgd291bGQgYmUgdXNlZC4gQnV0IHRoaXMgYENZUFJFU1NfVVNCX0RFVklDRWAgbWFjcm8uLi4gaXQncyBkZWZpbmVkIGFzOlxuXG5gYGBjXG4jZGVmaW5lIENZUFJFU1NfVVNCX0RFVklDRShkZXZfaWQpIFxcXG5cdHsgXFxcblx0XHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcblx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcblx0fVxuYGBgXG5cbi4uLmFuZCBpdCdzIGV4cGxpY2l0bHkgYXNzaWduaW5nIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgISBUaGF0IGNvbXBsZXRlbHkgY29udHJhZGljdHMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBJIGNhbiBzZWUgd2h5IHRoaXMgY291bGQgYmUgY29uZnVzaW5nLiBUaW1lIHRvIHZlcmlmeSB0aGlzIGFuZCBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdmVuZG9yIGFzc2lnbm1lbnRzIGlzIGNvcnJlY3QgaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIGNydWNpYWwuIExldCBtZSBnbyBiYWNrIGFuZCByZS1ldmFsdWF0ZSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzY1OSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0Njo0Ni42MTUxOTIwNjNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTQwLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTQwOlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxcXFxuMTU0MTpcXHRcXHR9XFxuMTU0MjpcXHRcXG4xNTQzOlxcdCNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbjE1NDQ6XFx0XFx0eyBcXFxcXFxuMTU0NTpcXHRcXHRcXHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbjE1NDY6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG4xNTQ3OlxcdFxcdH1cXG4xNTQ4OlxcdFxcbjE1NDk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xcbjE1NTA6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzE0M19ERVZJQ0VfSUQpLFxcbjE1NTE6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNl9ERVZJQ0VfSUQpLFxcbjE1NTI6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzI0Ml9ERVZJQ0VfSUQpLFxcbjE1NTM6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzU2OV9ERVZJQ0VfSUQpLFxcbjE1NTQ6XFx0XFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDY6NDYuNjE1NDY2NjczWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MzY2NDI2OTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgQ1lXIENvZGUgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBqdXN0IGNvbmZpcm1lZCBzb21ldGhpbmcgaW1wb3J0YW50IHJlZ2FyZGluZyB0aGUgQnJvYWRjb20gZmlybXdhcmUgdmVuZG9yIElEcy4gVGhlIGBDWVBSRVNTX1VTQl9ERVZJQ0VgIGZsYWcgaXMgZGVmaW5pdGVseSBzZXR0aW5nIHRoZSBgLmRyaXZlcl9pbmZvYCB0byBgQlJDTUZfRldWRU5ET1JfV0NDYCwgcmlnaHQ/IFRoYXQncyB3aGF0IEkgbmVlZGVkIHRvIHZlcmlmeS4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGBCUkNNRl9GV1ZFTkRPUl9DWVdgIHZhbHVlICpzcGVjaWZpY2FsbHkqIGlzbid0IHVzZWQgZm9yIFVTQiBkZXZpY2VzOyBpdCdzIGV4Y2x1c2l2ZWx5IGZvciBTRElPIGFuZCBQQ0llIGludGVyZmFjZXMuXG5cbkNvbnNlcXVlbnRseSwgYW55IGNvZGUgcGF0aCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYENZV2AgdmVuZG9yIElELCBsaWtlIGBicmNtZl9jeXdfbWdtdF90eGAgb3IgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIG9wZXJhdGluZyBpbiBVU0IgZW11bGF0aW9uIG1vZGUuIFRoaXMgaXMgY3J1Y2lhbC4gU2luY2Ugb3VyIHZpcnR1YWxpemF0aW9uIHNldHVwIGRvZXNuJ3QgZW11bGF0ZSBTRElPIG9yIFBDSWUsIHRoaXMgYENZV2Atc3BlY2lmaWMgY29kZSBiZWNvbWVzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSB3aXRoaW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCdzIHNpbXBseSBub3QgcG9zc2libGUgdG8gdHJpZ2dlciB0aGVzZSBmdW5jdGlvbnMgdW5kZXIgdGhlc2UgY29uZGl0aW9ucy5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBgQ1lXYC1zcGVjaWZpYyBjb2RlIGlzIGluYWNjZXNzaWJsZSBnaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIG9mIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGRldmljZXMgd2UgYXJlIGVtdWxhdGluZy4gVGhlcmUncyBubyBwb2ludCBpbiBkZWRpY2F0aW5nIGZ1enppbmcgcmVzb3VyY2VzIHRvIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIHJlYWNoZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4Mzg1LCJPdXRwdXRUb2tlbnMiOjE0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ3OjAwLjk4MTg5ODEzWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIG9wZXJhdGlvbnMgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgKGJyY21mbWFjKSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBCUkNNRl9GV1ZFTkRPUl9DWVcgdmFyaWFudCBpcyBvbmx5IGJvdW5kIHRvIHNwZWNpZmljIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gVVNCIGRldmljZXMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QsIGFyZSBleHBsaWNpdGx5IGJvdW5kIHRvIHRoZSBXQ0MgdmFyaWFudCBpbnN0ZWFkLiBTaW5jZSBTRElPIGFuZCBQQ0llIEJyb2FkY29tIFdpLUZpIGRldmljZXMgY2Fubm90IGJlIHNvZnR3YXJlLWVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIG9wZXJhdGlvbnMgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgKGJyY21mbWFjKSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBCUkNNRl9GV1ZFTkRPUl9DWVcgdmFyaWFudCBpcyBvbmx5IGJvdW5kIHRvIHNwZWNpZmljIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gVVNCIGRldmljZXMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QsIGFyZSBleHBsaWNpdGx5IGJvdW5kIHRvIHRoZSBXQ0MgdmFyaWFudCBpbnN0ZWFkLiBTaW5jZSBTRElPIGFuZCBQQ0llIEJyb2FkY29tIFdpLUZpIGRldmljZXMgY2Fubm90IGJlIHNvZnR3YXJlLWVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowszm7m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 08:17:03 +0000 UTC FinishedAt: 2026-07-10 08:47:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBDeXByZXNzIChDWVcpIHZlbmRvci1zcGVjaWZpYyBmaXJtd2FyZSBvcGVyYXRpb25zIGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIChicmNtZm1hYykgd2lyZWxlc3MgZHJpdmVyLiBUaGUgQlJDTUZfRldWRU5ET1JfQ1lXIHZhcmlhbnQgaXMgb25seSBib3VuZCB0byBzcGVjaWZpYyBTRElPIGFuZCBQQ0llIGRldmljZSBJRHMuIFVTQiBkZXZpY2VzLCB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBiZSBlbXVsYXRlZCB2aWEgZHVtbXlfaGNkLCBhcmUgZXhwbGljaXRseSBib3VuZCB0byB0aGUgV0NDIHZhcmlhbnQgaW5zdGVhZC4gU2luY2UgU0RJTyBhbmQgUENJZSBCcm9hZGNvbSBXaS1GaSBkZXZpY2VzIGNhbm5vdCBiZSBzb2Z0d2FyZS1lbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgdGhlc2UgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMGUyYTM4ZjVhOGNjNTMxZDVkNDk3NTZiZTI4NzMwYTg4ODkyZDkxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDg6NDM6MTEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuaW5kZXggY2UwOWQ0NGZhNzNjZjguLmNjYTUzZmYxOTM2YTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG5AQCAtMjMsNiAmIzQzOzIzLDggQEBcbiAjZGVmaW5lIE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FXHQ0MDAwXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfV0FJVF9USU1FXHQoTUdNVF9BVVRIX0ZSQU1FX0RXRUxMX1RJTUUgJiM0MzsgMTAwKVxuIFxuJiM0MztzdGF0aWMgYXRvbWljX3QgYnJjbWZfY3l3X21nbXRfdHhfaWQgPSBBVE9NSUNfSU5JVCgwKTtcbiYjNDM7XG4gc3RhdGljIGludCBicmNtZl9jeXdfc2V0X3NhZV9wd2Qoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX2NyeXB0b19zZXR0aW5ncyAqY3J5cHRvKVxuIHtcbkBAIC0xNTUsNyAmIzQzOzE1Nyw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2VkYVswXSwgXHUwMDI2bWdtdC1cdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuLVx0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuJiM0MztcdG1mX3BhcmFtcy1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMihhdG9taWNfaW5jX3JldHVybihcdTAwMjZicmNtZl9jeXdfbWdtdF90eF9pZCkpO1xuIFx0bWVtY3B5KG1mX3BhcmFtcy1cdTAwM2VkYXRhLCBcdTAwMjZidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSxcbiBcdCAgICAgICBsZTE2X3RvX2NwdShtZl9wYXJhbXMtXHUwMDNlbGVuKSk7XG4gXG5AQCAtMjAwLDcgJiM0MzsyMDIsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi1cdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XG4mIzQzO1x0c3RydWN0IGJyY21mX2F1dGhfcmVxX3N0YXR1c19sZSBhdXRoX3N0YXR1cyA9IHt9O1xuIFx0aW50IHJldCA9IDA7XG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O0VudGVyXFxuXCYjMzQ7KTtcbkBAIC0yMDgsNiAmIzQzOzIxMCw4IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0ZHJ2ciA9IGlmcC1cdTAwM2VkcnZyO1xuIFx0aWYgKHBhcmFtcy1cdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xuJiM0MztcdFx0aWYgKHBhcmFtcy1cdTAwM2VwbWtpZClcbiYjNDM7XHRcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbiBcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpO1xuIFx0fSBlbHNlIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7RXh0ZXJuYWwgYXV0aGVudGljYXRpb24gZmFpbGVkOiBzdGF0dXM9JWRcXG5cJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIG9wZXJhdGlvbnMgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgKGJyY21mbWFjKSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBCUkNNRl9GV1ZFTkRPUl9DWVcgdmFyaWFudCBpcyBvbmx5IGJvdW5kIHRvIHNwZWNpZmljIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gVVNCIGRldmljZXMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QsIGFyZSBleHBsaWNpdGx5IGJvdW5kIHRvIHRoZSBXQ0MgdmFyaWFudCBpbnN0ZWFkLiBTaW5jZSBTRElPIGFuZCBQQ0llIEJyb2FkY29tIFdpLUZpIGRldmljZXMgY2Fubm90IGJlIHNvZnR3YXJlLWVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzBlMmEzOGY1YThjYzUzMWQ1ZDQ5NzU2YmUyODczMGE4ODg5MmQ5MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDEwIDA4OjQzOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwppbmRleCBjZTA5ZDQ0ZmE3M2NmOC4uY2NhNTNmZjE5MzZhNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jCkBAIC0yMyw2ICYjNDM7MjMsOCBAQAogI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfRFdFTExfVElNRQk0MDAwCiAjZGVmaW5lIE1HTVRfQVVUSF9GUkFNRV9XQUlUX1RJTUUJKE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FICYjNDM7IDEwMCkKIAomIzQzO3N0YXRpYyBhdG9taWNfdCBicmNtZl9jeXdfbWdtdF90eF9pZCA9IEFUT01JQ19JTklUKDApOwomIzQzOwogc3RhdGljIGludCBicmNtZl9jeXdfc2V0X3NhZV9wd2Qoc3RydWN0IGJyY21mX2lmICppZnAsCiAJCQkJIHN0cnVjdCBjZmc4MDIxMV9jcnlwdG9fc2V0dGluZ3MgKmNyeXB0bykKIHsKQEAgLTE1NSw3ICYjNDM7MTU3LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAKIAltZW1jcHkoJmFtcDttZl9wYXJhbXMtJmd0O2RhWzBdLCAmYW1wO21nbXQtJmd0O2RhWzBdLCBFVEhfQUxFTik7CiAJbWVtY3B5KCZhbXA7bWZfcGFyYW1zLSZndDtic3NpZFswXSwgJmFtcDttZ210LSZndDtic3NpZFswXSwgRVRIX0FMRU4pOwotCW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7CiYjNDM7CW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoYXRvbWljX2luY19yZXR1cm4oJmFtcDticmNtZl9jeXdfbWdtdF90eF9pZCkpOwogCW1lbWNweShtZl9wYXJhbXMtJmd0O2RhdGEsICZhbXA7YnVmW0RPVDExX01HTVRfSERSX0xFTl0sCiAJICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy0mZ3Q7bGVuKSk7CiAKQEAgLTIwMCw3ICYjNDM7MjAyLDcgQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIHsKIAlzdHJ1Y3QgYnJjbWZfaWYgKmlmcDsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyOwotCXN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7CiYjNDM7CXN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTsKIAlpbnQgcmV0ID0gMDsKIAogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwpAQCAtMjA4LDYgJiM0MzsyMTAsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmcCA9IG5ldGRldl9wcml2KGRldik7CiAJZHJ2ciA9IGlmcC0mZ3Q7ZHJ2cjsKIAlpZiAocGFyYW1zLSZndDtzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykgewomIzQzOwkJaWYgKHBhcmFtcy0mZ3Q7cG1raWQpCiYjNDM7CQkJbWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtJmd0O3Bta2lkLCBXTEFOX1BNS0lEX0xFTik7CiAJCWF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTsKIAl9IGVsc2UgewogCQlicGh5X2VycihkcnZyLCAmIzM0O0V4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXG4mIzM0OywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyOAoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDMzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCcm9hZGNvbSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLCBzcGVjaWZpY2FsbHkgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIGluIGEgZnV6emluZyBjb250ZXh0LiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGludHJvZHVjaW5nIGEgc3RhdGljIGF0b21pYyB2YXJpYWJsZSwgYGJyY21mX2N5d19tZ210X3R4X2lkYCwgYW5kIHVzaW5nIGl0IHRvIHNldCBgbWZfcGFyYW1zLSZndDtwYWNrZXRfaWRgIHdpdGhpbiB0aGUgYGJyY21mX2N5d19tZ210X3R4YCBmdW5jdGlvbiwgd2hpY2ggcmVwbGFjZXMgdGhlIHVzZSBvZiBgKmNvb2tpZWAuIEludGVyZXN0aW5nLiBBbHNvLCBpdCYjMzk7cyBpbml0aWFsaXppbmcgYGF1dGhfc3RhdHVzYCB0byB6ZXJvIGluIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgYW5kIGNvbmRpdGlvbmFsbHkgY29weWluZyB0aGUgYHBta2lkYCBpZiBpdCYjMzk7cyBub3QgTlVMTC4gU3RhbmRhcmQgZW5vdWdoLgoKQnV0IG5vdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGFwcGxpZXMgdG8gZnV6emluZy4gSXQmIzM5O3MgQnJvYWRjb20sIHdoaWNoIG9mdGVuIG1lYW5zIHNwZWNpZmljIGhhcmR3YXJlLiBHZXR0aW5nIGEgcmVhbCBCcm9hZGNvbSBkZXZpY2UgdG8gdGVzdCBvbiBjYW4gYmUgYSBjaGFsbGVuZ2UuIFZpcnR1YWxpemF0aW9uIHVzdWFsbHkgYWRkcyBhbm90aGVyIGxheWVyIG9mIGNvbXBsZXhpdHkgZm9yIHdpcmVsZXNzIGRyaXZlcnMgdW5sZXNzIHlvdSYjMzk7cmUgbHVja3kgZW5vdWdoIHRvIGZpbmQgYW4gZW11bGF0b3IgKGxpa2UgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBoZWxwZnVsIGZvciBnZW5lcmljIG1hYzgwMjExIHRlc3RpbmcsIGJ1dCBsaWtlbHkgbm90IGJyY21mbWFjKS4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSBmdXp6ZWQ/CgpXYWl0IGEgc2Vjb25k4oCmIGBicmNtZm1hY2AgaGFzIFVTQiwgU0RJTywgYW5kIFBDSUUgaW50ZXJmYWNlcy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gVVNCIGlzIGZhciBtb3JlIGFtZW5hYmxlIHRvIGZ1enppbmcuIFN5emthbGxlciBoYXMgZXhjZWxsZW50IFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgZ2FkZ2V0L2R1bW15X2hjZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYGJyY21mbWFjYCBzdXBwb3J0cyBVU0IuIFllcywgdGhlcmUmIzM5O3MgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AuIEdvb2QsIHRoYXQgb3BlbnMgdXAgYSBzaWduaWZpY2FudCBhdHRhY2sgc3VyZmFjZS4gTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlIGBicmNtZl9jeXdfbWdtdF90eGAgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgVVNCIGludGVyZmFjZS4gVGhhdCYjMzk7cyB0aGUga2V5IG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfbWdtdF90eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyNjpzdGF0aWMgYXRvbWljX3QgYnJjbWZfY3l3X21nbXRfdHhfaWQgPSBBVE9NSUNfSU5JVCgwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTI3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTEwMz1zdGF0aWNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjEwNDppbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEwNS1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTE1OS1cdG1lbWNweShcdTAwMjZtZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjE2MDpcdG1mX3BhcmFtcy1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMihhdG9taWNfaW5jX3JldHVybihcdTAwMjZicmNtZl9jeXdfbWdtdF90eF9pZCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMTYxLVx0bWVtY3B5KG1mX3BhcmFtcy1cdTAwM2VkYXRhLCBcdTAwMjZidWZbRE9UMTFfTUdNVF9IRFJfTEVOXSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yMzY9c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzg6XHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzktXHRkcnZyLVx1MDAzZW9wcy1cdTAwM2VleHRlcm5hbF9hdXRoID0gYnJjbWZfY3l3X2V4dGVybmFsX2F1dGg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzOAoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgZHJpdmVyLCBgYnJjbWZtYWNgLCBpcyBzZXQgdXAuIEkgc2VlIHRoYXQgdGhlIGZ1bmN0aW9uIGBicmNtZl9jeXdfbWdtdF90eGAgaXMgc3BlY2lmaWNhbGx5IGFzc2lnbmVkIHRvIHRoZSBgZHJ2ci0mZ3Q7b3BzLSZndDttZ210X3R4YCBwb2ludGVyLiBBbmQsIHNpbWlsYXJseSwgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyBhc3NpZ25lZCB0byBgZHJ2ci0mZ3Q7b3BzLSZndDtleHRlcm5hbF9hdXRoYC4gVGhpcyBpcyBzdGFuZGFyZCBkcml2ZXIgYXJjaGl0ZWN0dXJlOyBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIGhhbmRsZWQgdGhpcyB3YXkuCgpOb3csIEkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBgYnJjbWZtYWNgIGluc3RhbmNlIGlzIHZ1bG5lcmFibGUgdmlhIFVTQi4gVGhhdCYjMzk7cyB3aGF0IEkgd2FudCB0byBuYWlsIGRvd24gbmV4dC4gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBgQ09ORklHX0JSQ01GTUFDX1VTQmAuIFRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgdGhlIGNydWNpYWwgaW5kaWNhdG9yIGFzIHRvIHdoZXRoZXIgVVNCIGlzIGV2ZW4gYSB2YWxpZCBwYXRoLiBJZiBpdCYjMzk7cyBlbmFibGVkLCB0aGVuIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJZiBub3QsIHRoZW4gSSBjYW4gbW92ZSBvbiB0byBvdGhlciBhcmVhcyBvZiBpbnRlcmVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRk1BQ19VU0ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0zMC1cdGJvb2wgXCYjMzQ7VVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGU9MzY9YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfU0RJTykgJiM0Mzs9IFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM4LVx0XHRiY21zZGgub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlOjM5OmJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgJiM0Mzs9IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGUtNDAtXHRcdHVzYi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMyMz1zdGF0aWMgaW5saW5lIGludCBicmNtZl9zZGlvX3JlZ2lzdGVyKHZvaWQpIHsgcmV0dXJuIDA7IH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjMyNjojaWZkZWYgQ09ORklHX0JSQ01GTUFDX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMyNy12b2lkIGJyY21mX3VzYl9leGl0KHZvaWQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0zMDI9c3RhdGljIGludCBicmNtZl91c2JfdHhfY3RscGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1ZiwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjMxNTpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgIT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzE2LVx0XHRlcnIgPSAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0zNDc9c3RhdGljIGludCBicmNtZl91c2JfcnhfY3RscGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1ZiwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjM2MDpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgIT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzYxLVx0XHRlcnIgPSAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01MDc9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTI0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjUyNTpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTI2Olx0ICAgIGRldmluZm8tXHUwMDNlYnVzX3B1Yi5zdGF0ZSA9PSBCUkNNRk1BQ19VU0JfU1RBVEVfU0xFRVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01MjctXHRcdHNrYl9wdXQoc2tiLCB1cmItXHUwMDNlYWN0dWFsX2xlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTU3MT1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfZmlsbF9hbGwoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTc1Olx0aWYgKGRldmluZm8tXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzYtXHRcdGJyY21mX2VycihcJiMzNDtidXMgaXMgbm90IHVwPSVkXFxuXCYjMzQ7LCBkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01ODQ9YnJjbWZfdXNiX3N0YXRlX2NoYW5nZShzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sIGludCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk2LVx0LyogdXBkYXRlIHN0YXRlIG9mIHVwcGVyIGxheWVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTk3Olx0aWYgKHN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk4LVx0XHRicmNtZl9kYmcoVVNCLCBcJiMzNDtEQlVTIGlzIGRvd25cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU5OS1cdFx0YnJjbWZfYnVzX2NoYW5nZV9zdGF0ZShiY21mX2J1cywgQlJDTUZfQlVTX0RPV04pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjYwMDpcdH0gZWxzZSBpZiAoc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjAxLVx0XHRicmNtZl9kYmcoVVNCLCBcJiMzNDtEQlVTIGlzIHVwXFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjA4PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3R4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjIwLVx0YnJjbWZfZGJnKFVTQiwgXCYjMzQ7RW50ZXIsIHNrYj0lcFxcblwmIzM0Oywgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo2MjE6XHRpZiAoZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlICE9IEJSQ01GTUFDX1VTQl9TVEFURV9VUCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTYyMi1cdFx0cmV0ID0gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjY1PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3VwKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjY5LVx0YnJjbWZfZGJnKFVTQiwgXCYjMzQ7RW50ZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjY3MDpcdGlmIChkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3MS1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3My1cdC8qIFN1Y2Nlc3MsIGluZGljYXRlIGRldmluZm8gaXMgZnVsbHkgdXAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo2NzQ6XHRicmNtZl91c2Jfc3RhdGVfY2hhbmdlKGRldmluZm8sIEJSQ01GTUFDX1VTQl9TVEFURV9VUCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjc1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz03MTQ9c3RhdGljIHZvaWQgYnJjbWZfdXNiX2Rvd24oc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NzIyOlx0aWYgKGRldmluZm8tXHUwMDNlYnVzX3B1Yi5zdGF0ZSA9PSBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjMtXHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NzI1Olx0YnJjbWZfdXNiX3N0YXRlX2NoYW5nZShkZXZpbmZvLCBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNzI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz05NzY9c3RhdGljIGludCBicmNtZl91c2JfZGxzdGFydChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sIHU4ICpmdywgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtOTg5LVx0aWYgKGVyciA9PSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MDpcdFx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtOTkxLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MjpcdFx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0ZBSUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtOTkzLVx0YnJjbWZfZGJnKFVTQiwgXCYjMzQ7RXhpdCwgZXJyPSVkXFxuXCYjMzQ7LCBlcnIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTAzPXN0cnVjdCBicmNtZl91c2JkZXYgKmJyY21mX3VzYl9hdHRhY2goc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTExLVx0ZGV2aW5mby1cdTAwM2VidXNfcHViLm50eHEgPSBudHhxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjExMTI6XHRkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMTEzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNDgzPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ4OC1cdGJyY21mX2RiZyhVU0IsIFwmIzM0O0VudGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDg5Olx0ZGV2aW5mby1cdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX1NMRUVQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0OTAtXHRicmNtZl9jYW5jZWxfYWxsX3VyYnMoZGV2aW5mbyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE0OTg9c3RhdGljIGludCBicmNtZl91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1MDU6XHRkZXZpbmZvLVx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUwNi1cdGJyY21mX3VzYl9yeF9maWxsX2FsbChkZXZpbmZvKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmgtNC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo1OiNpZm5kZWYgQlJDTUZNQUNfVVNCX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo2OiNkZWZpbmUgQlJDTUZNQUNfVVNCX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaC03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oPTg9ZW51bSBicmNtZl91c2Jfc3RhdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjk6XHRCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDoxMDpcdEJSQ01GTUFDX1VTQl9TVEFURV9ETF9GQUlMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjExOlx0QlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTI6XHRCUkNNRk1BQ19VU0JfU1RBVEVfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTM6XHRCUkNNRk1BQ19VU0JfU1RBVEVfU0xFRVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaC0xNC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaD0zNT1zdHJ1Y3QgYnJjbWZfdXNicmVxIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmgtNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6NDI6I2VuZGlmIC8qIEJSQ01GTUFDX1VTQl9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3MgoJCQkJCQkJb3V0cHV0OiA1OQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgVVNCIFN1cHBvcnQgaW4gdGhlIGBicmNtZm1hY2AgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBpbnRvIHRoZSBgYnJjbWZtYWNgIGRyaXZlciBhbmQgSSBzZWVtIHRvIHJlY2FsbCBpdCBoYXZpbmcgVVNCIHN1cHBvcnQuIE5vdywgd2hlcmUgd2FzIHRoYXQgcGF0Y2g/IEFoYSwgaXQmIzM5O3MgbWVudGlvbmVkIGluIGBicmNtZm1hYy9jeXcvY29yZS5jYC4gSW50ZXJlc3RpbmcuIFRoZSBuZXh0IHF1ZXN0aW9uIGJ1cm5pbmcgaW4gbXkgbWluZCBpcywgaXMgdGhpcyBVU0IgZnVuY3Rpb25hbGl0eSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgQnJvYWRjb20gY2hpcHNldCwgb3IgaXMgaXQgYSBtb3JlIGdlbmVyYWwgaW1wbGVtZW50YXRpb24gYXBwbGljYWJsZSBhY3Jvc3MgdGhlIGBicmNtZm1hY2AgZmFtaWx5PyBUbyBnZXQgYSBjbGVhciBwaWN0dXJlLCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBpdHNlbGYsIHNvIGxldCYjMzk7cyBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgIGZvciBzb21lIGRldGFpbGVkIGluc2lnaHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0yMDA9YnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0yMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzY6c3RhdGljIHZvaWQgYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MzcwPWNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzMtXHQuYWN0aXZhdGVfZXZlbnRzID0gYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3NDpcdC5nZXRfY2ZnODAyMTFfb3BzID0gYnJjbWZfY3l3X2dldF9jZmc4MDIxMV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzUtXHQucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMgPSBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkxOQoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGJyY21mX2N5d19vcHMgQXNzaWdubWVudCoqCgpBbHJpZ2h0LCBzbyBgYnJjbWZfY3l3X29wc2AgaXMgZ2V0dGluZyBpbml0aWFsaXplZCB3aXRoIGBicmNtZl9md3ZpZF9vcHNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgbm90IG5lY2Vzc2FyaWx5IHVudXN1YWwuIEl0IHN1Z2dlc3RzIHRoYXQgdGhlIGRyaXZlciYjMzk7cyB1bmRlcmx5aW5nIG9wZXJhdGlvbnMgYXJlIGJlaW5nIG1hbmFnZWQgYnkgdGhlIGZpcm13YXJlIHZpZGVvIGludGVyZmFjZS4gTGV0JiMzOTtzIHNlZSBob3cgYGJyY21mX2N5d19vcHNgIGlzIGFjdHVhbGx5ICp1c2VkKi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgc2VlIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuIFVuZGVyc3RhbmRpbmcgdGhlIHBvaW50cyBvZiBjb21tb25hbGl0eSBhbmQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBzdHJ1Y3R1cmVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBhcmNoaXRlY3R1cmUuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRoZSBmdW5jdGlvbnMgd2l0aGluIGBicmNtZl9jeXdfb3BzYCBhcmUgY2FsbGVkLiBUaGlzIGxpa2VseSBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUgZmlybXdhcmUgaW50ZXJhY3Rpb24gYW5kIHRoZSBkYXRhIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyY21mX2N5d19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTM1OD1zdGF0aWMgdm9pZCBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzozNzA6Y29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzcxLVx0LnNldF9zYWVfcGFzc3dvcmQgPSBicmNtZl9jeXdfc2V0X3NhZV9wd2QsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTQtXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE1Olx0XHRcdFx0XHQgICBcdTAwMjZicmNtZl9jeXdfb3BzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo4OmV4dGVybiBjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcdChcdTAwMjZicmNtZl9jeXdfb3BzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NzcKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJSQ01GX0ZXVkVORE9SX0NZVyBWZW5kb3IqKgoKT2theSwgc28gSSBzZWUgYSBuZXcgdmVuZG9yLCBgQlJDTUZfRldWRU5ET1JfQ1lXYCwgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Q2FuIHdlIGludGVyZmFjZSB3aXRoIHRoaXMgcGFydGljdWxhciB2ZW5kb3IgdmlhIFVTQj8mIzM0OyBJdCYjMzk7cyBhIGtleSBxdWVzdGlvbiwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgZGlnIGludG8gdGhlIGBicmNtZm1hY2AgbW9kdWxlIHRvIHNlZSBob3cgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXMgaGFuZGxlZCB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGFuZCB0aGUgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIG1vZGVsIHRvIGFuc3dlciB0aGF0IFVTQiBxdWVzdGlvbiBkZWZpbml0aXZlbHkuIFRoaXMgY291bGQgYmUgYSBuZXcgZGV2aWNlIG9yIGFuIGV2b2x1dGlvbiBvZiBleGlzdGluZyBzdXBwb3J0LiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSQ01GX0ZXVkVORE9SX0NZVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTM0PWVudW0gYnJjbWZfZnd2ZW5kb3Ige1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM1LVx0QlJDTUZfRldWRU5ET1JfV0NDLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjM2Olx0QlJDTUZfRldWRU5ET1JfQ1lXLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM3LVx0QlJDTUZfRldWRU5ET1JfQkNBLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTE5NTY9c3RhdGljIHMzMiBicmNtZl9zZXRfd3BhX3ZlcnNpb24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk2OC1cdH0gZWxzZSBpZiAoc21lLVx1MDAzZWNyeXB0by53cGFfdmVyc2lvbnMgXHUwMDI2IE5MODAyMTFfV1BBX1ZFUlNJT05fMikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MTk2OTpcdFx0aWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWZ3dmlkID09IEJSQ01GX0ZXVkVORE9SX0NZVyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTE5NzAtXHRcdCAgICBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gPT0gV0xBTl9BS01fU1VJVEVfU0FFKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM9MTI9c3RhdGljIGludCBfX2luaXQgYnJjbWZfY3l3X2luaXQodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNDpcdHJldHVybiBicmNtZl9md3ZpZF9yZWdpc3Rlcl92ZW5kb3IoQlJDTUZfRldWRU5ET1JfQ1lXLCBUSElTX01PRFVMRSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTUtXHRcdFx0XHRcdCAgIFx1MDAyNmJyY21mX2N5d19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM9MTg9c3RhdGljIHZvaWQgX19leGl0IGJyY21mX2N5d19leGl0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM6MjA6XHRicmNtZl9md3ZpZF91bnJlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMjEtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTctXHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNDE4Olx0XHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfQ1lXLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNDE5LVx0XHQuZndfc2VlZCA9IGZhbHNlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOT1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTM1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjUzNjpcdGNhc2UgQlJDTUZfRldWRU5ET1JfQ1lXOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTM3LVx0ZGVmYXVsdDpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExODMKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBWZW5kb3IgRmlybXdhcmUgVXNhZ2UgQWNyb3NzIERyaXZlcnMqKgoKSG1tLCBpbnRlcmVzdGluZy4gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgYEJSQ01GX0ZXVkVORE9SX0NZV2AgZGVmaW5pdGlvbi4gSSBzZWUgaXQgcmVmZXJlbmNlZCB3aXRoaW4gYHBjaWUuY2AsIGFuZCB0aGF0IHRyaWdnZXJzIGEgcXVlc3Rpb246IFdoZXJlIGVsc2UgaXMgdGhpcyB2ZW5kb3IgZmlybXdhcmUgcG90ZW50aWFsbHkgYmVpbmcgdXNlZD8gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMsIGlzIGl0IGFsc28gdXRpbGl6ZWQgaW4gdGhlIFVTQiBkcml2ZXIsIHNwZWNpZmljYWxseSBgdXNiLmNgPyBUaGlzIGlzIGNyaXRpY2FsIGZvciBhc3Nlc3NpbmcgdGhlIGJyb2FkZXIgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhhdCBwYXJ0aWN1bGFyIGZpcm13YXJlLCBhbmQgZW5zdXJpbmcgaXTigJlzIGhhbmRsZWQgY29uc2lzdGVudGx5IGFjcm9zcyBhbGwgcmVsZXZhbnQgZGV2aWNlIGNvbnRleHRzLiBJIG5lZWQgdG8gdHJhY2sgdGhpcyBkb3duIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfRldWRU5ET1JfQ1lXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE0MjEKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDoKCioqRGlnZ2luZyBpbnRvIGBmd3ZpZGAgaW4gYHVzYi5jYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBmd3ZpZGAgdmFyaWFibGUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIG1vZGlmaWVkIHdpdGhpbiB0aGUgYHVzYi5jYCBmaWxlLiBUaGlzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZy91bmRlcnN0YW5kaW5nIHNvbWUgcmVjZW50IGJlaGF2aW9yIEkmIzM5O3ZlIG9ic2VydmVkLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSByZWZlcmVuY2VzLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBjb25kaXRpb25hbHMgb3IgYXNzaWdubWVudHMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyBpdHMgdmFsdWUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGB1c2IuY2AgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGFueSBleHRlcm5hbCBzb3VyY2VzLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbWV0aG9kaWNhbGx5IHNlYXJjaGluZyBmb3IgaW5zdGFuY2VzIG9mIGBmd3ZpZGAgYW5kIHNlZSB3aGF0IHRoZSBjb2RlIGFyb3VuZCBpdCB0ZWxscyB1cy4gVGhpcyBtaWdodCBsZWFkIG1lIGRvd24gYSByYWJiaXQgaG9sZSwgYnV0IGhvcGVmdWxseSwgSSBjYW4gcmVjb25zdHJ1Y3QgdGhlIGxvZ2ljYWwgZmxvdyByZWxhdGVkIHRvIHRoaXMgcGFyYW1ldGVyIGFuZCBpdHMgc2lnbmlmaWNhbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmd3ZpZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTI0ND1zdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI0NTpcdFx0XHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVx0YnVzLVx1MDAzZXByb3RvX3R5cGUgPSBCUkNNRl9QUk9UT19CQ0RDO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XHRidXMtXHUwMDNlZnd2aWQgPSBmd3ZpZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjcxLVx0YnVzLVx1MDAzZWFsd2F5c191c2VfZndzX3F1ZXVlID0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTQKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBgYnJjbWZfdXNiX3Byb2JlX2NiYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgYGJyY21mX3VzYl9wcm9iZV9jYmAuIEkmIzM5O20gc3RhcnRpbmcgYnkgdHJhY2luZyBiYWNrIHRoZSBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCB3aGljaCBpcyB1c3VhbGx5IHRoZSBiZXN0IGFwcHJvYWNoIHdoZW4gZGVhbGluZyB3aXRoIGEgZGV2aWNlIGRyaXZlciYjMzk7cyBwcm9iZSBjYWxsYmFjay4gSSYjMzk7bGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtJiMzOTtzIGNvcmUgcHJvYmUgbWVjaGFuaXNtcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyByZWdpc3RlcmVkIG9yIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byBVU0ItcmVsYXRlZCBzdHJ1Y3R1cmVzIG9yIGZ1bmN0aW9ucy4KCkkmIzM5O20gbWVudGFsbHkgbWFwcGluZyB0aGUgVVNCIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIFRoaW5raW5nIHRocm91Z2ggdGhlIGB1c2JfZHJpdmVyYCBzdHJ1Y3R1cmUgYW5kIGl0cyBtZW1iZXJzLCBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGBicmNtZl91c2JfcHJvYmVfY2JgIHJlZmVyZW5jZWQgdGhlcmUsIG9yIHBlcmhhcHMgd2l0aGluIGEgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBCcm9hZGNvbSBkZXZpY2UuIEkgYW50aWNpcGF0ZSB0aGlzIHdpbGwgaW52b2x2ZSB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBVU0IgY29yZSwgdGhlIGRldmljZSYjMzk7cyBkZXNjcmlwdG9ycywgYW5kIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSBwYXRoIHRoYXQgbGVhZHMgZnJvbSBhIGRldmljZSBpbnNlcnRpb24gb3IgZW51bWVyYXRpb24gZXZlbnQgdG8gdGhpcyBzcGVjaWZpYyBjYWxsYmFjayBiZWluZyBpbnZva2VkLiBJJiMzOTtsbCBiZSB0aGlua2luZyBhYm91dCBob3cgZGV2aWNlIElEcyBhcmUgbWF0Y2hlZCwgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYXJkd2FyZS4KCkkmIzM5O20gbWVudGFsbHkgcHJlcGFyaW5nIGZvciBwb3RlbnRpYWwgY29tcGxpY2F0aW9ucy4gVGhlIGNhbGwgY2hhaW4gY291bGQgYmUgaW5kaXJlY3QsIGludm9sdmluZyBtdWx0aXBsZSBsYXllcnMgb2YgYWJzdHJhY3Rpb24uIEkmIzM5O2xsIHdhdGNoIG91dCBmb3IgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBhIGhvdHBsdWcgc2NlbmFyaW8uIEFsc28sIEkmIzM5O2xsIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFVTQiBjb3JlIGFuZCBhbnkgc3BlY2lmaWMgcXVpcmtzIG9mIHRoZSBCcm9hZGNvbSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbi4gSSBrbm93IHRoZXNlIGRldmljZXMgY2FuIGJlIHRyaWNreSBhbmQgbWF5IHJlcXVpcmUgY3VzdG9tIHByb2Jpbmcgc2VxdWVuY2VzLCBzbyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aG9zZSB0b28uIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBVU0IgZGV2aWNlLCBwYXJ0aWN1bGFybHkgdGhlIGRldmljZSwgaW50ZXJmYWNlIGFuZCBlbmRwb2ludCBzdHJ1Y3R1cmVzLCBhbmQgdGhlbiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdG8gdHJhY2sgdGhlIGNhbGwgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfdXNiX3Byb2JlX2NiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDUtXHRcdFx0ICAgICAgZW51bSBicmNtZl9md3ZlbmRvciBmd3ZpZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0Mj1icmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDQzOlx0cmV0ID0gYnJjbWZfdXNiX3Byb2JlX2NiKGRldmluZm8sIGlkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQ0LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MTgKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBVU0IgZHJpdmVyIGRldmVsb3BtZW50OgoKKipBbmFseXppbmcgdGhlIERhdGEgRmxvdzogYGlkLSZndDtkcml2ZXJfaW5mb2AgYW5kIGBmd3ZpZGAqKgoKUmlnaHQsIHNvIGBpZC0mZ3Q7ZHJpdmVyX2luZm9gIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQsIHNwZWNpZmljYWxseSBhcyBgZnd2aWRgLiBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBmd3ZpZGAgdmFsdWUgaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGB1c2IuY2AgZmlsZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZGF0YSBhbmQgc2VlIHdoYXQgdGhlIGRyaXZlciBpcyBkb2luZyB3aXRoIHRob3NlIHNwZWNpZmljIGBkcml2ZXJfaW5mb2AgdmFsdWVzLiBUaGlzIGlzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBvciBhdCBsZWFzdCBpbml0aWFsaXphdGlvbiBzdGVwcywgZm9yIHRoZSBkZXZpY2UgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtLiBMZXQmIzM5O3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBtZWFuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRl9GV1ZFTkRPUl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTE9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTMzLVx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTM0Olx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM5LVx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9MSU5LU1lTLCBkZXZfaWQpLCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NDA6XHRcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NDEtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NDUtXHRcdFVTQl9ERVZJQ0UoQ1lfVVNCX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NDY6XHRcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NDctXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTM5CgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIFRoaXMgYEJSQ01GX0ZXVkVORE9SX1dDQ2Ag4oCTIGhvbGQgb24sIGlzIHRoaXMgYWN0dWFsbHkgdXNlZCBhY3Jvc3MgKmFsbCogVVNCIGRldmljZXM/IFRoYXQgY2FuJiMzOTt0IGJlIHJpZ2h0LiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24uCgoqKkludmVzdGlnYXRpbmcgVVNCIERldmljZSBGaXJtd2FyZSBMb2FkaW5nKioKCkkgbmVlZCB0byBjb25maXJtIHRoaXMgcXVpY2tseS4gTXkgaW5zdGluY3RzIHRlbGwgbWUgc29tZXRoaW5nIGlzIGFtaXNzIGhlcmUuIExldCBtZSBjaGVjayB0aGUgc291cmNlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY2AuIFNwZWNpZmljYWxseSwgYXJvdW5kIGxpbmUgMTUzMyBzaG91bGQgcHJvdmlkZSBzb21lIGluc2lnaHQuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgc2VjdGlvbiB0byBzZWUgaG93IGBCUkNNRl9GV1ZFTkRPUl9XQ0NgIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCB0byBzZWUgaWYgbXkgaW5pdGlhbCBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LiBUaGlzIHNlZW1zIGxpa2UgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZSBhbmQgSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciB2YXJpYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1MzA6XHRcbjE1MzE6XHQjZGVmaW5lIEJSQ01GX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxuMTUzMjpcdFx0eyBcXFxuMTUzMzpcdFx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcbjE1MzQ6XHRcdFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXG4xNTM1Olx0XHR9XG4xNTM2Olx0XG4xNTM3Olx0I2RlZmluZSBMSU5LU1lTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxuMTUzODpcdFx0eyBcXFxuMTUzOTpcdFx0XHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9MSU5LU1lTLCBkZXZfaWQpLCBcXFxuMTU0MDpcdFx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcbjE1NDE6XHRcdH1cbjE1NDI6XHRcbjE1NDM6XHQjZGVmaW5lIENZUFJFU1NfVVNCX0RFVklDRShkZXZfaWQpIFxcXG4xNTQ0Olx0XHR7IFxcXG4xNTQ1Olx0XHRcdFVTQl9ERVZJQ0UoQ1lfVVNCX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxuMTU0NjpcdFx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcbjE1NDc6XHRcdH1cbjE1NDg6XHRcbjE1NDk6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgYnJjbWZfdXNiX2RldmlkX3RhYmxlW10gPSB7XG4xNTUwOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzMTQzX0RFVklDRV9JRCksXG4xNTUxOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM2X0RFVklDRV9JRCksXG4xNTUyOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjQyX0RFVklDRV9JRCksXG4xNTUzOlx0XHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCXzQzNTY5X0RFVklDRV9JRCksXG4xNTU0Olx0XHRMSU5LU1lTX1VTQl9ERVZJQ0UoQlJDTV9VU0JfNDMyMzVfTElOS1NZU19ERVZJQ0VfSUQpLFxuMTU1NTpcdFx0Q1lQUkVTU19VU0JfREVWSUNFKENZX1VTQl80MzczX0RFVklDRV9JRCksXG4xNTU2Olx0XHR7IFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xHLCBCUkNNX1VTQl80MzI0Ml9MR19ERVZJQ0VfSUQpIH0sXG4xNTU3Olx0XHQvKiBzcGVjaWFsIGVudHJ5IGZvciBkZXZpY2Ugd2l0aCBmaXJtd2FyZSBsb2FkZWQgYW5kIHJ1bm5pbmcgKi9cbjE1NTg6XHRcdEJSQ01GX1VTQl9ERVZJQ0UoQlJDTV9VU0JfQkNNRldfREVWSUNFX0lEKSxcbjE1NTk6XHRcdENZUFJFU1NfVVNCX0RFVklDRShCUkNNX1VTQl9CQ01GV19ERVZJQ0VfSUQpLFxuMTU2MDpcdFx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxuMTU2MTpcdH07XG4xNTYyOlx0XG4xNTYzOlx0TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGJyY21mX3VzYl9kZXZpZF90YWJsZSk7XG4xNTY0Olx0XG4xNTY1Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGJyY21mX3VzYmRydnIgPSB7XG4xNTY2Olx0XHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuMTU2NzpcdFx0LnByb2JlID0gYnJjbWZfdXNiX3Byb2JlLFxuMTU2ODpcdFx0LmRpc2Nvbm5lY3QgPSBicmNtZl91c2JfZGlzY29ubmVjdCxcbjE1Njk6XHRcdC5pZF90YWJsZSA9IGJyY21mX3VzYl9kZXZpZF90YWJsZSxcbjE1NzA6XHRcdC5zdXNwZW5kID0gYnJjbWZfdXNiX3N1c3BlbmQsXG4xNTcxOlx0XHQucmVzdW1lID0gYnJjbWZfdXNiX3Jlc3VtZSxcbjE1NzI6XHRcdC5yZXNldF9yZXN1bWUgPSBicmNtZl91c2JfcmVzZXRfcmVzdW1lLFxuMTU3MzpcdFx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbjE1NzQ6XHRcdC5kaXNhYmxlX2h1Yl9pbml0aWF0ZWRfbHBtID0gMSxcbjE1NzU6XHR9O1xuMTU3NjpcdFxuMTU3NzpcdHN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKm5vdHVzZWQpXG4xNTc4Olx0e1xuMTU3OTpcdFx0LyogZGV2aWNlIHBhc3QgaXMgdGhlIHVzYiBpbnRlcmZhY2Ugc28gd2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3OTYKCQkJCQkJCW91dHB1dDogNTMKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIHRoZSBCUkNNRiBGaXJtd2FyZSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBpdCBsb29rcyBsaWtlIGBCUkNNRl9GV1ZFTkRPUl9DWVdgIGlzbiYjMzk7dCBhY3R1YWxseSBsZXZlcmFnZWQgd2l0aGluIHRoZSBgdXNiLmNgIGRyaXZlciBjb2RlLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGltZSB0byBzaGlmdCBmb2N1cyBhbmQgc2VlIGlmIGl0JiMzOTtzIGJlaW5nIHV0aWxpemVkIGVsc2V3aGVyZS4gTGV0JiMzOTtzIHBpdm90IG91ciBhdHRlbnRpb24gb3ZlciB0byBgc2Rpby5jYC4gSG9wZWZ1bGx5LCB0aGUgYW5zd2VyIGxpZXMgd2l0aGluIHRoYXQgZmlsZS4gSSBoYXZlIGEgZmVlbGluZyB0aGUgZmlybXdhcmUgdmVuZG9yIHNlbGVjdGlvbiBpcyBsaWtlbHkgaGFuZGxlZCB0aGVyZSwgY29uc2lkZXJpbmcgdGhlIGFyY2hpdGVjdHVyZSBhbmQgdGhlIGNvbW1vbiB1c2UtY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRl9GV1ZFTkRPUl8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMjMKCQkJCQkJCW91dHB1dDogNTQKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzLCBrbm93aW5nIGZ1bGwgd2VsbCB3aGF0IEkmIzM5O20gbG9va2luZyBmb3I6CgoqKkJDTVNESC5DOiBJbml0aWFsIFNjYW4qKgoKQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gZG9pbmcgaXMgdG8gb3BlbiBhbmQgZXhhbWluZSBgYmNtc2RoLmNgLiBJIG5lZWQgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoaXMgZmlsZSBxdWlja2x5LiBHaXZlbiB0aGUgbmFtZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSByZWxhdGVkIHRvIHRoZSBCcm9hZGNvbSBTREggaW50ZXJmYWNlIG9yIGFzc29jaWF0ZWQgZHJpdmVycy4gVGhhdCYjMzk7cyBteSBzdGFydGluZyBhc3N1bXB0aW9uLCBhbnl3YXkuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LgoKTXkgaW5pdGlhbCBzY2FuIHdpbGwgaW52b2x2ZToKCiogICAqKkhlYWRlciBpbmNsdXNpb25zKio6IEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlcywgb2J2aW91c2x5LCBidXQgYWxzbyBzcGVjaWZpYyBvbmVzIHRoYXQgaGludCBhdCB0aGUgaGFyZHdhcmUgb3IgbGlicmFyaWVzIGl0IGludGVyYWN0cyB3aXRoIChlLmcuIEJyb2FkY29tIFNESyBoZWFkZXJzLCBzcGVjaWZpYyBTREggY2hpcHNldHMsIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcykuIFRoZXNlIGluY2x1c2lvbnMgZ2l2ZSBtZSBjb250ZXh0LgoqICAgKipHbG9iYWwgdmFyaWFibGVzIGFuZCBzdHJ1Y3R1cmVzKio6IFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGFuZCB1c2VkIGhlcmU/IEFueSBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlcyBvciBidWZmZXJzPyBUaGVzZSB3aWxsIHByb3ZpZGUgaGludHMgYWJvdXQgaG93IHRoZSBtb2R1bGUgbWFuYWdlcyB0aGUgU0RIIGludGVyZmFjZS4gSSYjMzk7bSBzY2FubmluZyBmb3IgJiMzNDtpbnRlcmVzdGluZyYjMzQ7IG5hbWVzIHRvbzogYW55IG9idmlvdXMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBlcnJvciBjb2Rlcywgc3RhdGVzLCBldGMuIHRoYXQgZ2l2ZSBtZSBhIGNsZWFyZXIgaWRlYSBvZiB0aGUgbW9kdWxlJiMzOTtzIGZ1bmN0aW9uLgoqICAgKipGdW5jdGlvbiBwcm90b3R5cGVzKio6IEEgcXVpY2sgcmVhZCBvZiB0aGUgcHJvdG90eXBlcyB0ZWxscyBtZSB3aGljaCBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuIFRoaXMgZ2l2ZXMgYSBmaXJzdCBndWVzcyBhcyB0byB0aGUgbW9kdWxlJiMzOTtzIGludGVuZGVkIHJvbGUuIEFyZSB0aGVzZSBpbml0aWFsaXphdGlvbiwgZGF0YSB0cmFuc2ZlciwgY29udHJvbCBvciBlcnJvciBoYW5kbGluZyBmdW5jdGlvbnM/CiogICAqKktleSBmdW5jdGlvbnMqKjogSWYgdGhlIHByZXZpb3VzIHN0ZXAgZGlkbiYjMzk7dCBnaXZlIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoZSBmaWxlIGRvZXMsIG9yIGlmIGEgc3BlY2lmaWMgZnVuY3Rpb24gbmFtZSBjYXRjaGVzIG15IGV5ZSwgSSYjMzk7bGwgZ28gc3RyYWlnaHQgdG8gaXRzIGRlZmluaXRpb24gYW5kIHVuZGVyc3RhbmQgaG93IGl0IHdvcmtzIGFuZCB3aGF0IGl0IGRvZXMuCgpJJiMzOTttIGFpbWluZyB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhpcyBmaWxlJiMzOTtzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIHRvIHRoZSBzcGVjaWZpYyBTREgtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IHRoaXMgY29kZSBwcm92aWRlcy4gU28sIGxldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfRldWRU5ET1JfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYz05MDA9aW50IGJyY21mX3NkaW9kX3Byb2JlKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtOTY4LVx0XHRTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo5Njk6XHRcdC5kcml2ZXJfZGF0YSA9IEJSQ01GX0ZXVkVORE9SXyAjIyBmd192ZW5kIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtOTcwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NzQtXHRcdFNESU9fREVWSUNFKFNESU9fVkVORE9SX0lEX0NZUFJFU1MsIGRldl9pZCksIFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6OTc1Olx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9GV1ZFTkRPUl8gIyMgZndfdmVuZCBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTk3Ni1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU4NTQKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ29kZTogUGlucG9pbnRpbmcgdGhlIEFyZWEgb2YgSW50ZXJlc3QqKgoKT2theSwgc28gSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZy4gQmFzZWQgb24gdGhlIGNvbnRleHQgKHdoaWNoIEkmIzM5O20gYXNzdW1pbmcsIGdpdmVuIHRoZSBsYWNrIG9mIHNwZWNpZmljIGRldGFpbHMgaW4gdGhlIHByb21wdCEpLCBpdCBzb3VuZHMgbGlrZSB0aGVyZSYjMzk7cyBhbiBpc3N1ZSBvciBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBteSBhdHRlbnRpb24gd2l0aGluIHRoZSBgYmNtc2RoLmNgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgbWVudGFsIG1vZGVsIG9mIHdoZXJlIHBvdGVudGlhbCBwcm9ibGVtcyBvciByZWxldmFudCBmdW5jdGlvbmFsaXR5IG1pZ2h0IHJlc2lkZSB3aXRoaW4gdGhhdCBtb2R1bGUuIE15IGluaXRpYWwgc3RyYXRlZ3kgaXMgdG8gemVybyBpbiBvbiBsaW5lIDk2OC4gVGhhdCBzcGVjaWZpYyBsaW5lIG51bWJlciBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCB0aGF0IGFyZWEgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIHVuZGVyc3RhbmQgaXRzIGltbWVkaWF0ZSBjb250ZXh0LiBIb3BlZnVsbHksIGxpbmUgOTY4IGlzIGluIGEgZnVuY3Rpb24sIGxvb3AsIG9yIGJsb2NrIHRoYXQgcmVsYXRlcyB0byB0aGUgcHJvYmxlbSBhdCBoYW5kLCBvciB0aGF0IHdpbGwgcHJvdmlkZSBtZSB3aXRoIGNsdWVzIGFzIHRvIHdoZXJlIGl0IGlzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb21tZW50cywgdmFyaWFibGUgbmFtZXMsIGFuZCBjb250cm9sIGZsb3cgdGhhdCBwcm92aWRlIGNsdWVzLiBJZiBsaW5lIDk2OCBpdHNlbGYgZG9lc24mIzM5O3QgeWllbGQgaW1tZWRpYXRlIGFuc3dlcnMsIEkmIzM5O2xsIGJlIHByZXBhcmVkIHRvIGV4cGFuZCBteSBzZWFyY2ggd2l0aGluIHRoZSBzdXJyb3VuZGluZyBibG9ja3Mgb2YgY29kZSBhYm92ZSBhbmQgYmVsb3cgdGhhdCBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTYwOlx0XHRpZiAocmV0KVxuIDk2MTpcdFx0XHRicmNtZl9zZGlvZF9yZW1vdmUoc2Rpb2Rldik7XG4gOTYyOlx0XG4gOTYzOlx0XHRyZXR1cm4gcmV0O1xuIDk2NDpcdH1cbiA5NjU6XHRcbiA5NjY6XHQjZGVmaW5lIEJSQ01GX1NESU9fREVWSUNFKGRldl9pZCwgZndfdmVuZCkgXFxcbiA5Njc6XHRcdHsgXFxcbiA5Njg6XHRcdFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQlJPQURDT00sIGRldl9pZCksIFxcXG4gOTY5Olx0XHRcdC5kcml2ZXJfZGF0YSA9IEJSQ01GX0ZXVkVORE9SXyAjIyBmd192ZW5kIFxcXG4gOTcwOlx0XHR9XG4gOTcxOlx0XG4gOTcyOlx0I2RlZmluZSBDWVdfU0RJT19ERVZJQ0UoZGV2X2lkLCBmd192ZW5kKSBcXFxuIDk3MzpcdFx0eyBcXFxuIDk3NDpcdFx0XHRTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxuIDk3NTpcdFx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9GV1ZFTkRPUl8gIyMgZndfdmVuZCBcXFxuIDk3NjpcdFx0fVxuIDk3NzpcdFxuIDk3ODpcdC8qIGRldmljZXMgd2Ugc3VwcG9ydCwgbnVsbCB0ZXJtaW5hdGVkICovXG4gOTc5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBicmNtZl9zZG1tY19pZHNbXSA9IHtcbiA5ODA6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMTQzLCBXQ0MpLFxuIDk4MTpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMyNDEsIFdDQyksXG4gOTgyOlx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzI5LCBXQ0MpLFxuIDk4MzpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzMCwgV0NDKSxcbiA5ODQ6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQsIFdDQyksXG4gOTg1Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM0MCwgV0NDKSxcbiA5ODY6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQxLCBXQ0MpLFxuIDk4NzpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzNjIsIFdDQyksXG4gOTg4Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM2NCwgV0NDKSxcbiA5ODk6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzVfNDMzOSwgV0NDKSxcbiA5OTA6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzksIFdDQyksXG4gOTkxOlx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzQzMCwgV0NDKSxcbiA5OTI6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDM5LCBXQ0MpLFxuIDk5MzpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM0NSwgV0NDKSxcbiA5OTQ6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDU1LCBXQ0MpLFxuIDk5NTpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM1NCwgV0NDKSxcbiA5OTY6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNTYsIFdDQyksXG4gOTk3Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzU5LCBXQ0MpLFxuIDk5ODpcdFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM3NTEsIFdDQyksXG4gOTk5Olx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80Mzc1MiwgV0NDKSxcbjEwMDA6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM3MywgQ1lXKSxcbjEwMDE6XHRcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDMwMTIsIENZVyksXG4xMDAyOlx0XHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV9DWVBSRVNTXzg5MzU5LCBDWVcpLFxuMTAwMzpcdFx0Q1lXX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM0MzksIENZVyksXG4xMDA0Olx0XHR7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9XG4xMDA1Olx0fTtcbjEwMDY6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHNkaW8sIGJyY21mX3NkbW1jX2lkcyk7XG4xMDA3Olx0XG4xMDA4Olx0XG4xMDA5Olx0c3RhdGljIHZvaWQgYnJjbWZfc2Rpb2RfYWNwaV9zYXZlX3Bvd2VyX21hbmFnZWFibGUoc3RydWN0IGJyY21mX3NkaW9fZGV2ICpzZGlvZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ3MAoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDEwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTRElPIEZ1enppbmcgRXhwbG9yYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYEJSQ01GX1NESU9fREVWSUNFYCB0aGluZywgc3BlY2lmaWNhbGx5IHRoZSBvbmUgdXNpbmcgYENZV2AuIFJpZ2h0LCBgQ1lXYCBpcyBiZWluZyByZWFjaGVkIHRocm91Z2ggU0RJTy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nIHRoaXMuIENhbiB3ZSBmdXp6IFNESU8/IEkmIzM5O3ZlIGdvdCB0byBjb25zaWRlciBhbGwgYW5nbGVzIGhlcmUuIEkga25vdyBTeXprYWxsZXIgZG9lc24mIzM5O3Qgc2VlbSB0byBoYXZlIGEgKmdlbmVyaWMqIFNESU8gZnV6emVyLiBIb2xkIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrLi4uIG5vLCBkZWZpbml0ZWx5IG5vIGJ1aWx0LWluLCBnZW5lcmljIFNESU8gZnV6emluZyBpbiBTeXprYWxsZXIuIEhtbS4gV2FpdCBhIG1pbnV0ZeKApiBXaGF0IGFib3V0IHRoZSBgcGNpZS5jYCBmdXp6aW5nIG1vZHVsZXM/IENvdWxkIHRoZXJlIGJlIGFuIGFwcHJvYWNoIHRvIGJ1aWxkIGZyb20gdGhhdD8gSSBuZWVkIHRvIGV4cGxvcmUgdGhpcyByb3V0ZSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI0MTA6XHRcdEJSQ01GX0RSVkRBVEFfQ1lXLFxuMjQxMTpcdFx0QlJDTUZfRFJWREFUQV9CQ0EsXG4yNDEyOlx0XHRCUkNNRl9EUlZEQVRBX1dDQyxcbjI0MTM6XHRcdEJSQ01GX0RSVkRBVEFfV0NDX1NFRUQsXG4yNDE0Olx0fTtcbjI0MTU6XHRcbjI0MTY6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7XG4yNDE3Olx0XHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xuMjQxODpcdFx0XHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfQ1lXLFxuMjQxOTpcdFx0XHQuZndfc2VlZCA9IGZhbHNlLFxuMjQyMDpcdFx0fSxcbjI0MjE6XHRcdFtCUkNNRl9EUlZEQVRBX0JDQV0gPSB7XG4yNDIyOlx0XHRcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9CQ0EsXG4yNDIzOlx0XHRcdC5md19zZWVkID0gZmFsc2UsXG4yNDI0Olx0XHR9LFxuMjQyNTpcdFx0W0JSQ01GX0RSVkRBVEFfV0NDXSA9IHtcbjI0MjY6XHRcdFx0LnZlbmRvciA9IEJSQ01GX0ZXVkVORE9SX1dDQyxcbjI0Mjc6XHRcdFx0LmZ3X3NlZWQgPSBmYWxzZSxcbjI0Mjg6XHRcdH0sXG4yNDI5Olx0XHRbQlJDTUZfRFJWREFUQV9XQ0NfU0VFRF0gPSB7XG4yNDMwOlx0XHRcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9XQ0MsXG4yNDMxOlx0XHRcdC5md19zZWVkID0gdHJ1ZSxcbjI0MzI6XHRcdH0sXG4yNDMzOlx0fTtcbjI0MzQ6XHRcbjI0MzU6XHQvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBwY2lfbWF0Y2hfaWQoKSBjYWxsICovXG4yNDM2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGJyY21mX3BjaWVfZGV2aWRfdGFibGVbXTtcbjI0Mzc6XHRcbjI0Mzg6XHRzdGF0aWMgaW50XG4yNDM5Olx0YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuMjQ0MDpcdHtcbjI0NDE6XHRcdGludCByZXQ7XG4yNDQyOlx0XHRzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXE7XG4yNDQzOlx0XHRzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvO1xuMjQ0NDpcdFx0c3RydWN0IGJyY21mX3BjaWVkZXYgKnBjaWVfYnVzX2RldjtcbjI0NDU6XHRcdHN0cnVjdCBicmNtZl9jb3JlICpjb3JlO1xuMjQ0NjpcdFx0c3RydWN0IGJyY21mX2J1cyAqYnVzO1xuMjQ0NzpcdFxuMjQ0ODpcdFx0aWYgKCFpZCkge1xuMjQ0OTpcdFx0XHRpZCA9IHBjaV9tYXRjaF9pZChicmNtZl9wY2llX2RldmlkX3RhYmxlLCBwZGV2KTtcbjI0NTA6XHRcdFx0aWYgKCFpZCkge1xuMjQ1MTpcdFx0XHRcdHBjaV9lcnIocGRldiwgXCYjMzQ7RXJyb3IgY291bGQgbm90IGZpbmQgcGNpX2RldmljZV9pZCBmb3IgJXg6JXhcXG5cJiMzNDssIHBkZXYtXHUwMDNldmVuZG9yLCBwZGV2LVx1MDAzZWRldmljZSk7XG4yNDUyOlx0XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4yNDUzOlx0XHRcdH1cbjI0NTQ6XHRcdH1cbjI0NTU6XHRcbjI0NTY6XHRcdGJyY21mX2RiZyhQQ0lFLCBcJiMzNDtFbnRlciAleDoleFxcblwmIzM0OywgcGRldi1cdTAwM2V2ZW5kb3IsIHBkZXYtXHUwMDNlZGV2aWNlKTtcbjI0NTc6XHRcbjI0NTg6XHRcdHJldCA9IC1FTk9NRU07XG4yNDU5Olx0XHRkZXZpbmZvID0ga3phbGxvY19vYmooKmRldmluZm8pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYxNQoJCQkJCQkJb3V0cHV0OiA1NQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIGBicmNtZl9wY2llX2RldmlkX3RhYmxlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYGJyY21mX3BjaWVfZGV2aWRfdGFibGVg4oCmIGltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyB0byBjaHVybiBvbiB3aGF0IHRoaXMgbGlrZWx5IHJlcHJlc2VudHMuIEJhc2VkIG9uIHRoZSBuYW1lLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGEgdGFibGUsIHdoaWNoIG1lYW5zIGEgc3RydWN0dXJlZCBkYXRhIHNldC4gVGhlIGBicmNtZmAgcGFydCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyByZWxhdGVkIHRvIEJyb2FkY29tIFdpLUZpIGRyaXZlcnMsIGFuZCBgcGNpZWAgb2YgY291cnNlLCBpbmRpY2F0ZXMgaXQgY29uY2VybnMgdGhlIFBDSSBFeHByZXNzIGludGVyZmFjZS4gVGhlIGBkZXZpZGAgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgbGlzdCBvZiBkZXZpY2UgSURzLgoKTXkgaW5pdGlhbCBoeXBvdGhlc2lzIGlzIHRoYXQgdGhpcyB0YWJsZSBpcyB0aGUgY29yZSBvZiBob3cgdGhlIGRyaXZlciBpZGVudGlmaWVzIGFuZCBzdXBwb3J0cyBkaWZmZXJlbnQgQnJvYWRjb20gUENJZSBXaS1GaSBkZXZpY2VzLiBJdCYjMzk7cyBwcm9iYWJseSB0aGUgY3J1Y2lhbCBsb29rdXAgbWVjaGFuaXNtLiBXaXRob3V0IGl0LCB0aGUgZHJpdmVyIHdvdWxkbiYjMzk7dCBrbm93IGhvdyB0byBpbnRlcmZhY2Ugd2l0aCBzcGVjaWZpYyBoYXJkd2FyZS4gSSYjMzk7bSBpbWFnaW5pbmcgcm93cyBvciBlbnRyaWVzLCBlYWNoIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIGRldmljZSwgcGVyaGFwcyB3aXRoIHZlbmRvciBhbmQgZGV2aWNlIElEcyBhcyB0aGUga2V5cy4KCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmsgYWJvdXQgd2hhdCBvdGhlciBmaWVsZHMgbWlnaHQgYmUgaW4gZWFjaCBlbnRyeS4gQmV5b25kIHRoZSBkZXZpY2UgSUQsIHRoZXJlJiMzOTtzIGxpa2VseSB0byBiZSBpbmZvcm1hdGlvbiB0byBkZXNjcmliZSB0aGUgZGV2aWNlJiMzOTtzIGNhcGFiaWxpdGllcywgc3BlY2lmaWMgZHJpdmVyIGxvYWRpbmcgaW5zdHJ1Y3Rpb25zLCBvciBtYXliZSBldmVuIGZpcm13YXJlIGluZm9ybWF0aW9uLiBDb3VsZCBpdCBkaWN0YXRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBwb3dlciBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMsIG9yIGV2ZW4gd2hpY2ggZmlybXdhcmUgZmlsZSB0byBsb2FkIGZvciBhIGdpdmVuIGRldmljZT8gRGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHRoZXJlIG1pZ2h0IGV2ZW4gYmUgcG9pbnRlciB0byBkYXRhIHN0cnVjdHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMgc3BlY2lmaWMgdG8gZWFjaCBkZXZpY2UuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHRoZSBicmlkZ2UgYmV0d2VlbiB0aGUgZ2VuZXJpYyBkcml2ZXIgYW5kIHRoZSBzcGVjaWZpYyBoYXJkd2FyZS4KCkkmIzM5O20gbm93IHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIHRhYmxlIHdvdWxkIGJlIG9yZ2FuaXplZCB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb2RlOiBJcyBpdCBhIHN0YXRpYyBhcnJheSBjb21waWxlZCBpbnRvIHRoZSBkcml2ZXIsIG9yIGlzIGl0IGxvYWRlZCBkeW5hbWljYWxseT8gSG93IGlzIGl0IGFjY2Vzc2VkPyBJcyBpdCBvcHRpbWl6ZWQgZm9yIGZhc3QgbG9va3VwcywgcGVyaGFwcyB1c2luZyBhIGhhc2ggdGFibGUgb3IgYSBiaW5hcnkgc2VhcmNoIGlmIHRoZSBkZXZpY2UgSURzIGFyZSBzb3J0ZWQ/IEFsc28sIHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHRhYmxlJiMzOTtzIHNpemU/IERvZXMgaXQgc2NhbGUgd2VsbCB0byBuZXcgQnJvYWRjb20gZGV2aWNlcywgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgbmVlZHMgdG8gYmUgcmVndWxhcmx5IHVwZGF0ZWQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY4MDpcdFx0XHRicmNtZl9wY2llX2Z3Y29uX3RpbWVyKGRldmluZm8sIHRydWUpO1xuMjY4MTpcdFx0XHRyZXR1cm4gMDtcbjI2ODI6XHRcdH1cbjI2ODM6XHRcbjI2ODQ6XHRjbGVhbnVwOlxuMjY4NTpcdFx0YnJjbWZfY2hpcF9kZXRhY2goZGV2aW5mby1cdTAwM2VjaSk7XG4yNjg2Olx0XHRkZXZpbmZvLVx1MDAzZWNpID0gTlVMTDtcbjI2ODc6XHRcdHBkZXYgPSBkZXZpbmZvLVx1MDAzZXBkZXY7XG4yNjg4Olx0XHRicmNtZl9wY2llX3JlbW92ZShwZGV2KTtcbjI2ODk6XHRcbjI2OTA6XHRcdGVyciA9IGJyY21mX3BjaWVfcHJvYmUocGRldiwgTlVMTCk7XG4yNjkxOlx0XHRpZiAoZXJyKVxuMjY5MjpcdFx0XHRfX2JyY21mX2VycihOVUxMLCBfX2Z1bmNfXywgXCYjMzQ7cHJvYmUgYWZ0ZXIgcmVzdW1lIGZhaWxlZCwgZXJyPSVkXFxuXCYjMzQ7LCBlcnIpO1xuMjY5MzpcdFxuMjY5NDpcdFx0cmV0dXJuIGVycjtcbjI2OTU6XHR9XG4yNjk2Olx0XG4yNjk3Olx0XG4yNjk4Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtID0ge1xuMjY5OTpcdFx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxuMjcwMDpcdFx0LnJlc3VtZSA9IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMsXG4yNzAxOlx0XHQuZnJlZXplID0gYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyxcbjI3MDI6XHRcdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcbjI3MDM6XHR9O1xuMjcwNDpcdFxuMjcwNTpcdFxuMjcwNjpcdCNlbmRpZiAvKiBDT05GSUdfUE0gKi9cbjI3MDc6XHRcbjI3MDg6XHRcbjI3MDk6XHQjZGVmaW5lIEJSQ01GX1BDSUVfREVWSUNFKGRldl9pZCwgZndfdmVuZCkgXFxcbjI3MTA6XHRcdHsgXFxcbjI3MTE6XHRcdFx0UENJX0RFVklDRShCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAoZGV2X2lkKSksIFxcXG4yNzEyOlx0XHRcdC5jbGFzcyA9IFBDSV9DTEFTU19ORVRXT1JLX09USEVSIFx1MDAzY1x1MDAzYyA4LCBcXFxuMjcxMzpcdFx0XHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxuMjcxNDpcdFx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxuMjcxNTpcdFx0fVxuMjcxNjpcdCNkZWZpbmUgQlJDTUZfUENJRV9ERVZJQ0VfU1VCKGRldl9pZCwgc3VidmVuZCwgc3ViZGV2LCBmd192ZW5kKSBcXFxuMjcxNzpcdFx0eyBcXFxuMjcxODpcdFx0XHRQQ0lfREVWSUNFX1NVQihCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAoZGV2X2lkKSwgXFxcbjI3MTk6XHRcdFx0XHQgICAgICAgKHN1YnZlbmQpLCAoc3ViZGV2KSksIFxcXG4yNzIwOlx0XHRcdC5jbGFzcyA9IFBDSV9DTEFTU19ORVRXT1JLX09USEVSIFx1MDAzY1x1MDAzYyA4LCBcXFxuMjcyMTpcdFx0XHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxuMjcyMjpcdFx0XHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxuMjcyMzpcdFx0fVxuMjcyNDpcdFxuMjcyNTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW10gPSB7XG4yNzI2Olx0XHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1MF9ERVZJQ0VfSUQsIFdDQyksXG4yNzI3Olx0XHRCUkNNRl9QQ0lFX0RFVklDRV9TVUIoMHg0MzU1LCBCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAweDQzNTUsIFdDQyksXG4yNzI4Olx0XHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1NF9SQVdfREVWSUNFX0lELCBXQ0MpLFxuMjcyOTpcdFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTVfREVWSUNFX0lELCBXQ0NfU0VFRCksXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDYzCgkJCQkJCQlvdXRwdXQ6IDU3CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgZW1iZWRkZWQgc3lzdGVtcyBhbmQgTGludXggZHJpdmVyIGRldmVsb3BtZW50OgoKKipEZWVwIERpdmU6IEV4cGxvcmluZyB0aGUgYnJjbWZfcGNpZV9kZXZpZF90YWJsZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgYENZV2AgaXMgYWN0dWFsbHkgcmVmZXJlbmNlZCBhbnl3aGVyZSB3aXRoaW4gdGhlIGBicmNtZl9wY2llX2RldmlkX3RhYmxlYC4gVGhpcyBpcyBjcnVjaWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgQnJvYWRjb20mIzM5O3MgV2lGaSBkcml2ZXIsIGBicmNtZl9wY2llYCwgaGFuZGxlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIFNwZWNpZmljYWxseSwgSSBzdXNwZWN0IGBDWVdgIHJlZmVycyB0byBhIHNwZWNpZmljIEJyb2FkY29tIGNoaXBzZXQgZmFtaWx5LCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIGRyaXZlciBrbm93cyBhYm91dCBpdC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBkcml2ZXIgY29tcGF0aWJpbGl0eSBhbmQgdGhlIHBvdGVudGlhbCBuZWVkIGZvciBzb21lIGtpbmQgb2YgZGV2aWNlLXNwZWNpZmljIGhhbmRsaW5nLiBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgaGFyZHdhcmUmIzM5O3MgY2FwYWJpbGl0aWVzIGFuZCB0aGUgc29mdHdhcmUmIzM5O3MgYXdhcmVuZXNzLiBJcyB0aGUgZGV2aWNlIElEIG1hcHBpbmcgY29ycmVjdD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgb21pc3Npb25zIEkgbmVlZCB0byBhZGRyZXNzPyBEaWdnaW5nIGludG8gdGhpcyB0YWJsZSBmZWVscyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCBlbnN1cmUgdGhlIGRyaXZlciBpcyBjb25maWd1cmVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZfUENJRV9ERVZJQ0UuKkNZVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNzI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzQ4LVx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNzFfREVWSUNFX0lELCBXQ0MpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNzQ5Olx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTk2X0RFVklDRV9JRCwgQ1lXKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjc1MC1cdEJSQ01GX1BDSUVfREVWSUNFKEJSQ01fUENJRV80Mzc3X0RFVklDRV9JRCwgV0NDX1NFRUQpLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjc1My1cdEJSQ01GX1BDSUVfREVWSUNFKEJSQ01fUENJRV80Mzc1Ml9ERVZJQ0VfSUQsIFdDQ19TRUVEKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6Mjc1NDpcdEJSQ01GX1BDSUVfREVWSUNFKENZX1BDSUVfNTQ1OTFfREVWSUNFX0lELCBDWVcpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzU1LVx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDgwMgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQ0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQQ0llLCBGdXp6aW5nLCBhbmQgdGhlIGBicmNtZm1hY2AgRHJpdmVyOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBgQ1lXYCBpcyB0aWVkIHRvIFBDSWUgZGV2aWNlcywgaW50ZXJlc3RpbmcuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSBmdXp6IFBDSWUgZGV2aWNlcz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgU3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgYSAqZ2VuZXJpYyogUENJZSBmdXp6ZXIgb3V0IG9mIHRoZSBib3guIEkgd2FzIGluaXRpYWxseSB0aGlua2luZyBpdCBtaWdodCBmdXp6IFBDSSBkZXZpY2VzIHZpYSBgdmZpb2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IG5hdGl2ZWx5IGZ1enogUENJIGRldmljZXMgdW5sZXNzIHRoZXJlIGlzIGEgZGVkaWNhdGVkIGZ1enplciwgbGlrZSB3aXRoIHBzZXVkby1zeXNjYWxscyBzdWNoIGFzIGBzeXpfcGNpXy4uLmAuIFdhaXQgYSBtaW51dGUsIGRvZXNuJiMzOTt0IFN5emthbGxlciBoYXZlIGBzeXpfcGNpXy4uLmA/IE5vLCB0aGF0JiMzOTtzIG5vdCByaWdodC4gSXQgZG9lcyB0aGluZ3MgbGlrZSBVU0Igd2l0aCBgZHVtbXlfaGNkYCBhbmQgYmx1ZXRvb3RoIHdpdGggYHZoY2lgLCBidXQgbm90aGluZyBnZW5lcmljIGZvciBQQ0kgZGlyZWN0bHksIGl0IGRvZXNuJiMzOTt0IGFwcGVhci4KCkFoLCBidXQgd2FpdCwgdGhlcmUgaXMgYHN5el9rdm1fc2V0dXBfY3B1YCB3aGljaCBtaWdodCBvcGVuIGEgZG9vciBmb3Igc29tZSBQQ0kgZnV6emluZyB0aHJvdWdoIFFFTVUuIEhvd2V2ZXIsIFBDSSBkcml2ZXJzIGFyZSB1c3VhbGx5IGhhcmQgdG8gZnV6eiB1bmxlc3MgdmlydHVhbGl6ZWQgKGxpa2UgdmlydGlvKSBvciBzcGVjaWZpY2FsbHkgdGFyZ2V0ZWQgYnkgYSBTeXprYWxsZXIgUENJIGZ1enplciwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgU3l6a2FsbGVyIGlzIGEgYml0IGxpZ2h0IGhlcmUuIFdhaXQsIEkgdGhvdWdodCB0aGVyZSB3ZXJlIGBzeXpfcGNpXy4uLmBzeXNjYWxscz8gTm8sIEkmIzM5O20gdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVsc2UuCgpPa2F5LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciBgbWFjODAyMTFfaHdzaW1gLiBUaGF0JiMzOTtzIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIG1hYzgwMjExLCByaWdodD8gVGhlbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBgYnJjbWZtYWNgLCB3aGljaCBpcyBhIEZ1bGxNQUMgZHJpdmVyLCB3aGljaCB1c2VzIGBjZmc4MDIxMWAsIG5vdCBgbWFjODAyMTFgLiBJdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZmlybXdhcmUsIHRoYXQmIzM5O3MgYSBrZXkgZGlzdGluY3Rpb24uCgpJZiBgYnJjbWZtYWNgIGl0c2VsZiBpc24mIzM5O3QgZnV6emFibGUsIEkgbmVlZCB0byBkZWNpZGUgaWYgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIHRoZSByaWdodCBtb3ZlLiBJIG5lZWQgdG8gY29uc2lkZXIsICYjMzQ7Q29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuJiMzNDsgVGhhdCBsaW5lIG9mIHRoaW5raW5nIGlzIGltcG9ydGFudC4KCk5vdywgYGJyY21mbWFjYCBkb2VzIGhhdmUgVVNCIHN1cHBvcnQsIGJ1dCBgQ1lXYCBpcyBzcGVjaWZpY2FsbHkgZm9yIFNESU8gYW5kIFBDSWUsIG5vdCBVU0IuIFdhaXQsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aGF0IGBDWVdgIGlzbiYjMzk7dCB1c2VkIGluIFVTQiBhdCBhbGwuIFdlIGNoZWNrZWQgZWFybGllciwgYnV0IGl0JiMzOTtzIHdvcnRoIGEgc2Vjb25kIGxvb2sgYXQgYHVzYi5jYCB0byBjb25maXJtIHRoYXQgYEJSQ01GX0ZXVkVORE9SX0NZV2AgZG9lc24mIzM5O3QgYXBwZWFyIHRoZXJlLiBKdXN0IHdhbnQgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDWVcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTg4NAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBCcm9hZGNvbSBXaS1GaSBGaXJtd2FyZSBQYXRocyBpbiBVU0IgdnMuIE90aGVyIEludGVyZmFjZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgQ1lXYCB0aGluZywgc3BlY2lmaWNhbGx5IGl0cyB1c2UgKG9yIGxhY2sgdGhlcmVvZikgaW4gYHVzYi5jYC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQmIzM5O3MgKm5vdCogdXNlZCBpbiB0aGUgVVNCIGltcGxlbWVudGF0aW9uLiBCdXQgSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBXaGF0IGlmIEkgbWlzc2VkIHNvbWV0aGluZz8gSSBiZXR0ZXIgY2hlY2sgaWYgYEJSQ01GX0ZXVkVORE9SX0NZV2AgYXBwZWFycyAqYW55d2hlcmUqIGluIGB1c2IuY2AuIE9rYXksIEkganVzdCBncmVwcGVkIGZvciBgQlJDTUZfRldWRU5ET1JfYCB3aXRoaW4gYHVzYi5jYCBhbmQgaXQmIzM5O3MgbG9va2luZyBsaWtlIG9ubHkgYEJSQ01GX0ZXVkVORE9SX1dDQ2AgaXMgcHJlc2VudC4gVGhhdCBjb25maXJtcyBpdCwgdGhlIFVTQiBkZXZpY2VzIGFyZSBpbmRlZWQgdXNpbmcgdGhlIGBXQ0NgIHBhdGgsIG5vdCB0aGUgYENZV2AgcGF0aC4KClRoaXMgbWVhbnMgdGhlIGBDWVdgIHZlbmRvciBmaXJtd2FyZSBpcyB1c2VkIGJ5IFNESU8gYW5kIFBDSWUgZGV2aWNlcy4gR2l2ZW4gdGhhdCBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgc3RyYWlnaHRmb3J3YXJkIHdheSB0byBmdXp6IFNESU8gb3IgUENJZSBpbnRlcmZhY2VzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQg4oCTIHVubGVzcywgb2YgY291cnNlLCBhIHZlcnkgc3BlY2lmaWMgQnJvYWRjb20gU0RJTy9QQ0llIFdpLUZpIGVtdWxhdG9yIGV4aXN0cywgd2hpY2ggYXMgZmFyIGFzIEkga25vdywgaXQgZG9lc24mIzM5O3Qg4oCTIEkmIzM5O20gdGhpbmtpbmcgdGhlc2UgY29kZSBwYXRocyBhcmUgYmFzaWNhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4KCk5vdywgd2FpdCBhIHNlYy4gQ2FuIFFFTVUgZG8gQnJvYWRjb20gUENJZSBXaS1GaSBlbXVsYXRpb24/IE5vcGUuIFdoYXQgYWJvdXQgQnJvYWRjb20gU0RJTyBXaS1GaT8gQWxzbyBuby4gU28sIGluIGVmZmVjdCwgZnVuY3Rpb25zIGxpa2UgYGJyY21mX2N5d19tZ210X3R4YCBhbmQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCB3b3VsZCBiZSBjb21wbGV0ZWx5IGluYWNjZXNzaWJsZSBpZiBJJiMzOTttIHJ1bm5pbmcgdGhpcyB0aGluZyBpbnNpZGUgYSB2aXJ0dWFsIG1hY2hpbmUuIFRoaXMgaXMgZ29vZCB0byBrbm93LiBCdXQsIGJlZm9yZSBJIG1ha2UgdGhpcyBhIHNvbGlkIGNvbmNsdXNpb24sIEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEkmIzM5O2xsIHRha2UgYSBsb29rIGF0IHdoZXJlIGBicmNtZl9jeXdfb3BzYCBpcyB1c2VkIGVsc2V3aGVyZSB0byBtYWtlIHN1cmUgaXQmIzM5O3Mgbm90IHJlYWNoZWQgdmlhIHNvbWUgKm90aGVyKiB1bmV4cGVjdGVkIG1lYW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9jeXdfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0zNTg9c3RhdGljIHZvaWQgYnJjbWZfY3l3X3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzY5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MzcwOmNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTM3MS1cdC5zZXRfc2FlX3Bhc3N3b3JkID0gYnJjbWZfY3l3X3NldF9zYWVfcHdkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM9MTI9c3RhdGljIGludCBfX2luaXQgYnJjbWZfY3l3X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE0LVx0cmV0dXJuIGJyY21mX2Z3dmlkX3JlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNTpcdFx0XHRcdFx0ICAgXHUwMDI2YnJjbWZfY3l3X29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC03LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmg6ODpleHRlcm4gY29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmg6OTojZGVmaW5lIENZV19WT1BTXHQoXHUwMDI2YnJjbWZfY3l3X29wcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE2NQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIEJyb2FkY29tIFdpLUZpIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBgQlJDTUZfRldWRU5ET1JfQ1lXYC4gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQmIzM5O3Mgc3BlY2lmaWMgdG8gQnJvYWRjb20mIzM5O3MgV2ktRmkgY2hpcHMsIGxpa2VseSB0aG9zZSBjb25uZWN0ZWQgdmlhIFNESU8gb3IgUENJZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gcmVhY2hlZC4gSSBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQlJDTUZfRldWRU5ET1JfQ1lXYCBpcyBvbmx5IHVzZWQgaW4gYGJjbXNkaC5jYCAoU0RJTykgYW5kIGBwY2llLmNgIChQQ0llKSBmaWxlcy4KCk5vdywgbXkgbWluZCBzdGFydHMgcmFjaW5nLiBJcyB0aGVyZSBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgdmlydHVhbGl6ZSBhbiBTRElPIG9yIFBDSWUgQnJvYWRjb20gZGV2aWNlPyBJIGNhbiYjMzk7dCB0aGluayBvZiBhbnkgY29tbW9uIHNldHVwIGxpa2UgdGhhdC4gVHlwaWNhbGx5LCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgeW91JiMzOTtyZSBub3QgZ29pbmcgdG8gYmUgZW11bGF0aW5nIHRoZXNlIHNwZWNpZmljIEJyb2FkY29tIGRldmljZXMgd2l0aG91dCBoYXJkd2FyZSBwYXNzdGhyb3VnaCwgcmlnaHQ/CgpBbHJpZ2h0LCBsZXQmIzM5O3MgZXhwbG9yZSBvdGhlciBhdmVudWVzLiBDb3VsZCBgbWFjODAyMTFfaHdzaW1gIGJlIGludm9sdmVkIHNvbWVob3c/IE5vLCB3YWl0LCB0aGF0JiMzOTtzIGEgY29tcGxldGVseSBzZXBhcmF0ZSBkcml2ZXIsIGBtYWM4MDIxMV9od3NpbS5jYCwgYW5kIGl0IGRvZXNuJiMzOTt0IHVzZSBgYnJjbWZtYWNgLiAgV2hhdCBhYm91dCBgY2ZnODAyMTFgPyBBaCwgdGhhdCYjMzk7cyB0aGUgZ2VuZXJpYyBzdWJzeXN0ZW0uIEJ1dCBldmVuIHRoYXQgb25seSBpbnRlcmFjdHMgd2l0aCBgYnJjbWZtYWNgIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkICphbmQqIGEgZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSBwcm9iZWQuIEFuZCBzaW5jZSB3ZSBjYW4mIzM5O3QgcHJvYmUgYSBCcm9hZGNvbSBTRElPIG9yIFBDSWUgZGV2aWNlIGluIFFFTVUvR0NFLCB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgc3VjY2VlZC4gVGhlIGRldmljZSB3aWxsIG5ldmVyIHJlZ2lzdGVyIHdpdGggYGNmZzgwMjExYC4gU28sIGl0IHNlZW1zIGxpa2UgYGJyY21mX2N5d19tZ210X3R4YCBhbmQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCAqYXJlKiB1bnJlYWNoYWJsZSB1bmRlciB0eXBpY2FsIGNpcmN1bXN0YW5jZXMuCgpPa2F5LCBsZXQgbWUgcGl2b3QuIEkgd29uZGVyIGlmIHN5emthbGxlciBjb3VsZCBiZSB1c2VkIGhlcmU/IEkgaGF2ZSB0byByZW1lbWJlciBpZiBJIHNhdyBhbnkgUENJIGZ1enppbmcgaW4gc3l6a2FsbGVyLiBJIGtub3cgc29tZSBmb3JrcyBtaWdodCBoYXZlIGBzeXpfcGNpXy4uLmAgcHNldWRvLXN5c2NhbGxzLiBCdXQgdGhlIHVwc3RyZWFtIHZlcnNpb24gZG9lc27igJl0IGhhdmUgYSBnZW5lcmFsIFBDSSBmdXp6ZXIgdGhhdCBjYW4gZnVsbHkgZW11bGF0ZSBQQ0kgZGV2aWNlcywgZG9lcyBpdD8gV2FpdCwgaGFzIHRoZXJlIGJlZW4gYW55IHJlY2VudCBkZXZlbG9wbWVudCBvbiBQQ0kgZnV6emluZyB3aXRoIGB2ZmlvYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmXigJlzIGEgYENPTkZJR19QQ0lgIG9yIHNpbWlsYXIgY29uZmlndXJhdGlvbiBpbnZvbHZlZC4uLgoKRXZlbiBpZiB0aGVyZSBpcyBQQ0kgZnV6emluZywgZG9lcyBpdCBlbXVsYXRlICpCcm9hZGNvbSogV2ktRmk/IFByb2JhYmx5IG5vdC4gVXN1YWxseSwgUENJIGZ1enppbmcgaW5qZWN0cyBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPIHJlYWRzL3dyaXRlcywgYnV0IHRoaXMgcmVxdWlyZXMgdGhlIGRyaXZlciB0byBiZSBib3VuZCB0byBhIHZpcnR1YWwgZGV2aWNlLiBJIGRvbuKAmXQgdGhpbmsgdGhlcmUgaXMgYSBnZW5lcmljIFBDSSBkZXZpY2UgZW11bGF0b3Igd2l0aGluIHN5emthbGxlci4KCkxldCYjMzk7cyBzZWXigKZzeXprYWxsZXIgaGFzIGBzeXpfdXNiX2Nvbm5lY3RgIGZvciBVU0IuLi4gYnV0IGZvciBQQ0ksIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIHNpbWlsYXI/IExpa2UsIGBzeXpfcGNpX2RldmljZV9hZGRgPyBObywgbm8gc3VjaCBsdWNrLiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhIGdlbmVyaWMgUENJIGRldmljZSBlbXVsYXRvci4gV2hhdCBhYm91dCBgdmhjaWA/IFRoYXTigJlzIGZvciBCbHVldG9vdGgsIG5vdCByZWxldmFudCBoZXJlLiBBbmQgYG1hYzgwMjExX2h3c2ltYCBpcyBmb3IgV2ktRmksIGJ1dCBkb2VzbiYjMzk7dCBpbnRlcmFjdCB3aXRoIHRoZSBzYW1lIGRyaXZlci4gU28sIGBicmNtZm1hY2AgaXMgZ2VuZXJhbGx5IG5vdCBmdXp6YWJsZSB1bmxlc3MgaXTigJlzIFVTQi4gQW5kLCBzaW5jZSB0aGlzIGNvZGUgc3BlY2lmaWNhbGx5IGNvbmNlcm5zIGBDWVdgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIFNESU8gYW5kIFBDSWUgb25seSwgaXTigJlzICpkZWZpbml0ZWx5KiBub3QgZnV6emFibGUuCgpPa2F5LCBiYWNrIHRvIHRoZSBwYXRjaC4gSSBuZWVkIHRvIHJldmlldyB0aGlzIGNvZGUgYWdhaW4uICAqU2NhbnMgdGhlIGNvZGUqICBIbW0sIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYnV0IGl0JiMzOTtzIGluIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBhIGJ1cyB0eXBlIChTRElPL1BDSWUpIHRoYXQgaXMgbm90IGdlbmVyYWxseSBlbXVsYXRlZC4KCk9uZSBsYXN0IGNoZWNrLCBJJiMzOTttIGp1c3QgZ29pbmcgdG8gZG91YmxlLWNoZWNrIG15IGluaXRpYWwgYXNzdW1wdGlvbjogaXMgYEJSQ01GX0ZXVkVORE9SX0NZV2AgKnJlYWxseSogb25seSB1c2VkIGluIHRob3NlIHR3byBmaWxlcz8gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSQ01GX0ZXVkVORE9SX0NZVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9MzQ9ZW51bSBicmNtZl9md3ZlbmRvciB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzUtXHRCUkNNRl9GV1ZFTkRPUl9XQ0MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzY6XHRCUkNNRl9GV1ZFTkRPUl9DWVcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzctXHRCUkNNRl9GV1ZFTkRPUl9CQ0EsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MTk1Nj1zdGF0aWMgczMyIGJyY21mX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0xOTY4LVx0fSBlbHNlIGlmIChzbWUtXHUwMDNlY3J5cHRvLndwYV92ZXJzaW9ucyBcdTAwMjYgTkw4MDIxMV9XUEFfVkVSU0lPTl8yKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoxOTY5Olx0XHRpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlZnd2aWQgPT0gQlJDTUZfRldWRU5ET1JfQ1lXIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk3MC1cdFx0ICAgIHNtZS1cdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA9PSBXTEFOX0FLTV9TVUlURV9TQUUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xMy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE0Olx0cmV0dXJuIGJyY21mX2Z3dmlkX3JlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNS1cdFx0XHRcdFx0ICAgXHUwMDI2YnJjbWZfY3l3X29wcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xOD1zdGF0aWMgdm9pZCBfX2V4aXQgYnJjbWZfY3l3X2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoyMDpcdGJyY21mX2Z3dmlkX3VucmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0yMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjQxNy1cdFtCUkNNRl9EUlZEQVRBX0NZV10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI0MTg6XHRcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9DWVcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTktXHRcdC5md19zZWVkID0gZmFsc2UsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDM5PWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MzUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTM2Olx0Y2FzZSBCUkNNRl9GV1ZFTkRPUl9DWVc6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MzctXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjAyOAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQ4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IFVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBtb2RpZmllZCBzZWN0aW9uIGlzIG9ubHkgdXNlZCBpbiBgcGNpZS5jYCBhbmQgYGJjbXNkaC5jYCwgYW5kIGxpa2VseSBvbmx5IHRocm91Z2ggbWFjcm8gZXhwYW5zaW9uLiBNeSBmaXJzdCB0aG91Z2h0IHdhcywgJiMzNDtDb3VsZCB3ZSBwb3NzaWJseSB0cmlnZ2VyIHRoaXMgc29tZWhvdyB0aHJvdWdoIGBjZmc4MDIxMWAgd2l0aG91dCB0aGUgZGV2aWNlIGZ1bGx5IHByb2JlZD8mIzM0OyBCdXQgbm8sIHRoYXQgd29uJiMzOTt0IHdvcmsuIGBjZmc4MDIxMWAgbmVlZHMgYSByZWdpc3RlcmVkIGB3aXBoeWAgZGV2aWNlLCB3aGljaCB0aGUgZHJpdmVyIGNyZWF0ZXMgZHVyaW5nIHByb2JlLiBJZiB0aGUgcHJvYmUgZmFpbHMgYmVjYXVzZSB0aGVyZSYjMzk7cyBubyBoYXJkd2FyZSwgdGhlIGB3aXBoeWAgaXNuJiMzOTt0IHJlZ2lzdGVyZWQsIGFuZCBgY2ZnODAyMTFgIHdvbiYjMzk7dCBrbm93IGFueXRoaW5nIGFib3V0IGl0LgoKTGV0JiMzOTtzIHRoaW5rIGlmIHRoZXJlJiMzOTtzIGFueSBvdGhlciBhdmVudWUuIElzIHRoZXJlIGEgZHVtbXkgZHJpdmVyIGZvciBicmNtZm1hYz8gTm9wZS4gQ2FuIHdlIGluamVjdCBTRElPIGRldmljZXMgaW4gc3l6a2FsbGVyPyBOby4gUENJZT8gU3RpbGwgbm8uIFNvLCBpdCBzZWVtcyBsaWtlIHRoaXMgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuCgpHaXZlbiB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTXkgcmVhc29uaW5nIGlzIHRoaXMgY29kZSBtb2RpZmllcyB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLCBCcm9hZGNvbSBicmNtZm1hYywgZGVhbGluZyB3aXRoIFNESU8gYW5kIFBDSWUgYnVzZXMuIFRoZXNlIGJ1cyB0eXBlcyBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgYWNjZXNzZWQgd2l0aGluIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0JiMzOTtzIHdvcmRpbmc6ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4mIzM0OyBZZXAsIHRoYXQmIzM5O3MgYSBwZXJmZWN0IGZpdC4gVGhlIHNwZWNpZmljIGNvZGUgaXMgd2l0aGluIGBicmNtZm1hYy9jeXcvY29yZS5jYCwgd2hpY2ggcmVsYXRlcyB0byB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3IgZmlybXdhcmUgdmFyaWFudCBvZiB0aGUgQnJvYWRjb20gRnVsbE1BQyBkcml2ZXIuIFRoaXMgQ1lXIHZhcmlhbnQgaXMgdGllZCB0byBjZXJ0YWluIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gV2UgY2FuJiMzOTt0IGVtdWxhdGUgdGhvc2UgYnVzZXMgd2l0aGluIHN0YW5kYXJkIHN5emthbGxlciBlbnZpcm9ubWVudHMuIFVubGlrZSBVU0IsIHdoZXJlIHdlIGNvdWxkIHVzZSBgZHVtbXlfaGNkYCBmb3IgZW11bGF0aW9uLgoKSnVzdCB0byBiZSAxMDAlIHN1cmUsIGxldCBtZSB2ZXJpZnkgYWdhaW4gaWYgdGhlIGBDWVdgIHZhcmlhbnQgaXMgYm91bmQgdG8gYW55IFVTQiBkZXZpY2UgSURzLiBJIGNoZWNrZWQgYHVzYi5jYCBhbmQgdGhlIGNvZGUgb25seSB1c2VzIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgLiBXYWl0LCBsZXQgbWUgY2hlY2sgdGhlIGBicmNtZl91c2JfZGV2aWRfdGFibGVgIG9uZSBtb3JlIHRpbWUsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q1lQUkVTU19VU0JfREVWSUNFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTExPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTQzOiNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQ0LVx0eyBcXFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBicmNtZl91c2JfZGV2aWRfdGFibGVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU1NC1cdExJTktTWVNfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNV9MSU5LU1lTX0RFVklDRV9JRCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU1NTpcdENZUFJFU1NfVVNCX0RFVklDRShDWV9VU0JfNDM3M19ERVZJQ0VfSUQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NTYtXHR7IFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xHLCBCUkNNX1VTQl80MzI0Ml9MR19ERVZJQ0VfSUQpIH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NTgtXHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU1OTpcdENZUFJFU1NfVVNCX0RFVklDRShCUkNNX1VTQl9CQ01GV19ERVZJQ0VfSUQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NjAtXHR7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NjU5CgkJCQkJCQlvdXRwdXQ6IDU0CgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkEgUXVpY2sgRG91YmxlLVRha2Ugb24gdGhlIEN5cHJlc3MgRGV2aWNlIElEKioKCkhvbGQgb24gYSBzZWNvbmQhIEkgbmVlZCB0byBwcm9jZXNzIHRoaXMuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgYmVjYXVzZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgQ3lwcmVzcyBkZXZpY2UsIHRoZSBgQlJDTUZfRldWRU5ET1JfQ1lXYCBmaXJtd2FyZSB2ZW5kb3IgSUQgd291bGQgYmUgdXNlZC4gQnV0IHRoaXMgYENZUFJFU1NfVVNCX0RFVklDRWAgbWFjcm8uLi4gaXQmIzM5O3MgZGVmaW5lZCBhczoKCmBgYGMKI2RlZmluZSBDWVBSRVNTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcCgl7IFwKCQlVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXAoJCS5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcCgl9CmBgYAoKLi4uYW5kIGl0JiMzOTtzIGV4cGxpY2l0bHkgYXNzaWduaW5nIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgISBUaGF0IGNvbXBsZXRlbHkgY29udHJhZGljdHMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBJIGNhbiBzZWUgd2h5IHRoaXMgY291bGQgYmUgY29uZnVzaW5nLiBUaW1lIHRvIHZlcmlmeSB0aGlzIGFuZCBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdmVuZG9yIGFzc2lnbm1lbnRzIGlzIGNvcnJlY3QgaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZyBjcnVjaWFsLiBMZXQgbWUgZ28gYmFjayBhbmQgcmUtZXZhbHVhdGUgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1NDA6XHRcdFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXG4xNTQxOlx0XHR9XG4xNTQyOlx0XG4xNTQzOlx0I2RlZmluZSBDWVBSRVNTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxuMTU0NDpcdFx0eyBcXFxuMTU0NTpcdFx0XHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcbjE1NDY6XHRcdFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXG4xNTQ3Olx0XHR9XG4xNTQ4Olx0XG4xNTQ5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xuMTU1MDpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzE0M19ERVZJQ0VfSUQpLFxuMTU1MTpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNl9ERVZJQ0VfSUQpLFxuMTU1MjpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzI0Ml9ERVZJQ0VfSUQpLFxuMTU1MzpcdFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzU2OV9ERVZJQ0VfSUQpLFxuMTU1NDpcdFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzODUKCQkJCQkJCW91dHB1dDogMTQ4CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgQ1lXIENvZGUgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgY29uZmlybWVkIHNvbWV0aGluZyBpbXBvcnRhbnQgcmVnYXJkaW5nIHRoZSBCcm9hZGNvbSBmaXJtd2FyZSB2ZW5kb3IgSURzLiBUaGUgYENZUFJFU1NfVVNCX0RFVklDRWAgZmxhZyBpcyBkZWZpbml0ZWx5IHNldHRpbmcgdGhlIGAuZHJpdmVyX2luZm9gIHRvIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgLCByaWdodD8gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZGVkIHRvIHZlcmlmeS4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGBCUkNNRl9GV1ZFTkRPUl9DWVdgIHZhbHVlICpzcGVjaWZpY2FsbHkqIGlzbiYjMzk7dCB1c2VkIGZvciBVU0IgZGV2aWNlczsgaXQmIzM5O3MgZXhjbHVzaXZlbHkgZm9yIFNESU8gYW5kIFBDSWUgaW50ZXJmYWNlcy4KCkNvbnNlcXVlbnRseSwgYW55IGNvZGUgcGF0aCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYENZV2AgdmVuZG9yIElELCBsaWtlIGBicmNtZl9jeXdfbWdtdF90eGAgb3IgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIG9wZXJhdGluZyBpbiBVU0IgZW11bGF0aW9uIG1vZGUuIFRoaXMgaXMgY3J1Y2lhbC4gU2luY2Ugb3VyIHZpcnR1YWxpemF0aW9uIHNldHVwIGRvZXNuJiMzOTt0IGVtdWxhdGUgU0RJTyBvciBQQ0llLCB0aGlzIGBDWVdgLXNwZWNpZmljIGNvZGUgYmVjb21lcyBlZmZlY3RpdmVseSBkZWFkIGNvZGUgd2l0aGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBwb3NzaWJsZSB0byB0cmlnZ2VyIHRoZXNlIGZ1bmN0aW9ucyB1bmRlciB0aGVzZSBjb25kaXRpb25zLgoKVGhlcmVmb3JlLCBnaXZlbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBgQ1lXYC1zcGVjaWZpYyBjb2RlIGlzIGluYWNjZXNzaWJsZSBnaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIG9mIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGRldmljZXMgd2UgYXJlIGVtdWxhdGluZy4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gZGVkaWNhdGluZyBmdXp6aW5nIHJlc291cmNlcyB0byBzb21ldGhpbmcgdGhhdCBjYW4mIzM5O3QgYmUgcmVhY2hlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDg6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDM6MTIuOTQ0MTQxNjc0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MDM3ODM2NzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoxMi45NDQxNTEyNzRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjEyODYwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMwZTJhMzhmNWE4Y2M1MzFkNWQ0OTc1NmJlMjg3MzBhODg4OTJkOTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDg6NDM6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xcbmluZGV4IGNlMDlkNDRmYTczY2Y4Li5jY2E1M2ZmMTkzNmE0MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuQEAgLTIzLDYgKzIzLDggQEBcXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfRFdFTExfVElNRVxcdDQwMDBcXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfV0FJVF9USU1FXFx0KE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FICsgMTAwKVxcbiBcXG4rc3RhdGljIGF0b21pY190IGJyY21mX2N5d19tZ210X3R4X2lkID0gQVRPTUlDX0lOSVQoMCk7XFxuK1xcbiBzdGF0aWMgaW50IGJyY21mX2N5d19zZXRfc2FlX3B3ZChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4gXFx0XFx0XFx0XFx0IHN0cnVjdCBjZmc4MDIxMV9jcnlwdG9fc2V0dGluZ3MgKmNyeXB0bylcXG4ge1xcbkBAIC0xNTUsNyArMTU3LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlZGFbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xcbiBcXHRtZW1jcHkoXFx1MDAyNm1mX3BhcmFtcy1cXHUwMDNlYnNzaWRbMF0sIFxcdTAwMjZtZ210LVxcdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xcbi1cXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xcbitcXHRtZl9wYXJhbXMtXFx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGF0b21pY19pbmNfcmV0dXJuKFxcdTAwMjZicmNtZl9jeXdfbWdtdF90eF9pZCkpO1xcbiBcXHRtZW1jcHkobWZfcGFyYW1zLVxcdTAwM2VkYXRhLCBcXHUwMDI2YnVmW0RPVDExX01HTVRfSERSX0xFTl0sXFxuIFxcdCAgICAgICBsZTE2X3RvX2NwdShtZl9wYXJhbXMtXFx1MDAzZWxlbikpO1xcbiBcXG5AQCAtMjAwLDcgKzIwMiw3IEBAIGJyY21mX2N5d19leHRlcm5hbF9hdXRoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2lmICppZnA7XFxuIFxcdHN0cnVjdCBicmNtZl9wdWIgKmRydnI7XFxuLVxcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XFxuK1xcdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXMgPSB7fTtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbiBcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuQEAgLTIwOCw2ICsyMTAsOCBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZnAgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHRkcnZyID0gaWZwLVxcdTAwM2VkcnZyO1xcbiBcXHRpZiAocGFyYW1zLVxcdTAwM2VzdGF0dXMgPT0gV0xBTl9TVEFUVVNfU1VDQ0VTUykge1xcbitcXHRcXHRpZiAocGFyYW1zLVxcdTAwM2VwbWtpZClcXG4rXFx0XFx0XFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXFx1MDAzZXBta2lkLCBXTEFOX1BNS0lEX0xFTik7XFxuIFxcdFxcdGF1dGhfc3RhdHVzLmZsYWdzID0gY3B1X3RvX2xlMTYoQlJDTUZfRVhUQVVUSF9TVUNDRVNTKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIGZhaWxlZDogc3RhdHVzPSVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoxMy41NTEzOTI0NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI3NDMwNTc0ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQ3lwcmVzcyAoQ1lXKSB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUgb3BlcmF0aW9ucyBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyAoYnJjbWZtYWMpIHdpcmVsZXNzIGRyaXZlci4gVGhlIEJSQ01GX0ZXVkVORE9SX0NZVyB2YXJpYW50IGlzIG9ubHkgYm91bmQgdG8gc3BlY2lmaWMgU0RJTyBhbmQgUENJZSBkZXZpY2UgSURzLiBVU0IgZGV2aWNlcywgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgYmUgZW11bGF0ZWQgdmlhIGR1bW15X2hjZCwgYXJlIGV4cGxpY2l0bHkgYm91bmQgdG8gdGhlIFdDQyB2YXJpYW50IGluc3RlYWQuIFNpbmNlIFNESU8gYW5kIFBDSWUgQnJvYWRjb20gV2ktRmkgZGV2aWNlcyBjYW5ub3QgYmUgc29mdHdhcmUtZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIHRoZXNlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMwZTJhMzhmNWE4Y2M1MzFkNWQ0OTc1NmJlMjg3MzBhODg4OTJkOTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAwODo0MzoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IGNlMDlkNDRmYTczY2Y4Li5jY2E1M2ZmMTkzNmE0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuQEAgLTIzLDYgKzIzLDggQEBcbiAjZGVmaW5lIE1HTVRfQVVUSF9GUkFNRV9EV0VMTF9USU1FXHQ0MDAwXG4gI2RlZmluZSBNR01UX0FVVEhfRlJBTUVfV0FJVF9USU1FXHQoTUdNVF9BVVRIX0ZSQU1FX0RXRUxMX1RJTUUgKyAxMDApXG4gXG4rc3RhdGljIGF0b21pY190IGJyY21mX2N5d19tZ210X3R4X2lkID0gQVRPTUlDX0lOSVQoMCk7XG4rXG4gc3RhdGljIGludCBicmNtZl9jeXdfc2V0X3NhZV9wd2Qoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgc3RydWN0IGNmZzgwMjExX2NyeXB0b19zZXR0aW5ncyAqY3J5cHRvKVxuIHtcbkBAIC0xNTUsNyArMTU3LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRtZW1jcHkoXHUwMDI2bWZfcGFyYW1zLVx1MDAzZWJzc2lkWzBdLCBcdTAwMjZtZ210LVx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XG4tXHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XG4rXHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoYXRvbWljX2luY19yZXR1cm4oXHUwMDI2YnJjbWZfY3l3X21nbXRfdHhfaWQpKTtcbiBcdG1lbWNweShtZl9wYXJhbXMtXHUwMDNlZGF0YSwgXHUwMDI2YnVmW0RPVDExX01HTVRfSERSX0xFTl0sXG4gXHQgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLVx1MDAzZWxlbikpO1xuIFxuQEAgLTIwMCw3ICsyMDIsNyBAQCBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHtcbiBcdHN0cnVjdCBicmNtZl9pZiAqaWZwO1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2cjtcbi1cdHN0cnVjdCBicmNtZl9hdXRoX3JlcV9zdGF0dXNfbGUgYXV0aF9zdGF0dXM7XG4rXHRzdHJ1Y3QgYnJjbWZfYXV0aF9yZXFfc3RhdHVzX2xlIGF1dGhfc3RhdHVzID0ge307XG4gXHRpbnQgcmV0ID0gMDtcbiBcbiBcdGJyY21mX2RiZyhUUkFDRSwgXCJFbnRlclxcblwiKTtcbkBAIC0yMDgsNiArMjEwLDggQEAgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmcCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRkcnZyID0gaWZwLVx1MDAzZWRydnI7XG4gXHRpZiAocGFyYW1zLVx1MDAzZXN0YXR1cyA9PSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4rXHRcdGlmIChwYXJhbXMtXHUwMDNlcG1raWQpXG4rXHRcdFx0bWVtY3B5KGF1dGhfc3RhdHVzLnBta2lkLCBwYXJhbXMtXHUwMDNlcG1raWQsIFdMQU5fUE1LSURfTEVOKTtcbiBcdFx0YXV0aF9zdGF0dXMuZmxhZ3MgPSBjcHVfdG9fbGUxNihCUkNNRl9FWFRBVVRIX1NVQ0NFU1MpO1xuIFx0fSBlbHNlIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCJFeHRlcm5hbCBhdXRoZW50aWNhdGlvbiBmYWlsZWQ6IHN0YXR1cz0lZFxcblwiLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDM6MTMuNTUxNDA4MjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTAzNDM4OTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJyb2FkY29tIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgc3BlY2lmaWNhbGx5IGlmIGl0J3MgcmVhY2hhYmxlIGluIGEgZnV6emluZyBjb250ZXh0LiBJdCBzZWVtcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYSBzdGF0aWMgYXRvbWljIHZhcmlhYmxlLCBgYnJjbWZfY3l3X21nbXRfdHhfaWRgLCBhbmQgdXNpbmcgaXQgdG8gc2V0IGBtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkYCB3aXRoaW4gdGhlIGBicmNtZl9jeXdfbWdtdF90eGAgZnVuY3Rpb24sIHdoaWNoIHJlcGxhY2VzIHRoZSB1c2Ugb2YgYCpjb29raWVgLiBJbnRlcmVzdGluZy4gQWxzbywgaXQncyBpbml0aWFsaXppbmcgYGF1dGhfc3RhdHVzYCB0byB6ZXJvIGluIGBicmNtZl9jeXdfZXh0ZXJuYWxfYXV0aGAgYW5kIGNvbmRpdGlvbmFsbHkgY29weWluZyB0aGUgYHBta2lkYCBpZiBpdCdzIG5vdCBOVUxMLiBTdGFuZGFyZCBlbm91Z2guXG5cbkJ1dCBub3cgSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGFwcGxpZXMgdG8gZnV6emluZy4gSXQncyBCcm9hZGNvbSwgd2hpY2ggb2Z0ZW4gbWVhbnMgc3BlY2lmaWMgaGFyZHdhcmUuIEdldHRpbmcgYSByZWFsIEJyb2FkY29tIGRldmljZSB0byB0ZXN0IG9uIGNhbiBiZSBhIGNoYWxsZW5nZS4gVmlydHVhbGl6YXRpb24gdXN1YWxseSBhZGRzIGFub3RoZXIgbGF5ZXIgb2YgY29tcGxleGl0eSBmb3Igd2lyZWxlc3MgZHJpdmVycyB1bmxlc3MgeW91J3JlIGx1Y2t5IGVub3VnaCB0byBmaW5kIGFuIGVtdWxhdG9yIChsaWtlIGBtYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgaGVscGZ1bCBmb3IgZ2VuZXJpYyBtYWM4MDIxMSB0ZXN0aW5nLCBidXQgbGlrZWx5IG5vdCBicmNtZm1hYykuIFRoZSBxdWVzdGlvbiBpcywgY2FuIHRoaXMgYmUgZnV6emVkP1xuXG5XYWl0IGEgc2Vjb25k4oCmIGBicmNtZm1hY2AgaGFzIFVTQiwgU0RJTywgYW5kIFBDSUUgaW50ZXJmYWNlcy4gVGhhdCBjaGFuZ2VzIHRoaW5ncy4gVVNCIGlzIGZhciBtb3JlIGFtZW5hYmxlIHRvIGZ1enppbmcuIFN5emthbGxlciBoYXMgZXhjZWxsZW50IFVTQiBmdXp6aW5nIGNhcGFiaWxpdGllcyB2aWEgZ2FkZ2V0L2R1bW15X2hjZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgaWYgYGJyY21mbWFjYCBzdXBwb3J0cyBVU0IuIFllcywgdGhlcmUncyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jYC4gR29vZCwgdGhhdCBvcGVucyB1cCBhIHNpZ25pZmljYW50IGF0dGFjayBzdXJmYWNlLiBOb3csIEkgbmVlZCB0byBjaGVjayBpZiB0aGUgYGJyY21mX2N5d19tZ210X3R4YCBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBVU0IgaW50ZXJmYWNlLiBUaGF0J3MgdGhlIGtleSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MjgsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoyMC40NTQ4NTExMjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxOTgzMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19tZ210X3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MjY6c3RhdGljIGF0b21pY190IGJyY21mX2N5d19tZ210X3R4X2lkID0gQVRPTUlDX0lOSVQoMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0xMDM9c3RhdGljXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MTA0OmludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTEwNS1cXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xNTktXFx0bWVtY3B5KFxcdTAwMjZtZl9wYXJhbXMtXFx1MDAzZWJzc2lkWzBdLCBcXHUwMDI2bWdtdC1cXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoxNjA6XFx0bWZfcGFyYW1zLVxcdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMihhdG9taWNfaW5jX3JldHVybihcXHUwMDI2YnJjbWZfY3l3X21nbXRfdHhfaWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0xNjEtXFx0bWVtY3B5KG1mX3BhcmFtcy1cXHUwMDNlZGF0YSwgXFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MjM2PXN0YXRpYyB2b2lkIGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM3LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYzoyMzg6XFx0ZHJ2ci1cXHUwMDNlb3BzLVxcdTAwM2VtZ210X3R4ID0gYnJjbWZfY3l3X21nbXRfdHg7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM5LVxcdGRydnItXFx1MDAzZW9wcy1cXHUwMDNlZXh0ZXJuYWxfYXV0aCA9IGJyY21mX2N5d19leHRlcm5hbF9hdXRoO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0MzoyMC41OTY4NDEyNjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDk0NDgxODIxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBkcml2ZXIsIGBicmNtZm1hY2AsIGlzIHNldCB1cC4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGJyY21mX2N5d19tZ210X3R4YCBpcyBzcGVjaWZpY2FsbHkgYXNzaWduZWQgdG8gdGhlIGBkcnZyLVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4YCBwb2ludGVyLiBBbmQsIHNpbWlsYXJseSwgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCBpcyBhc3NpZ25lZCB0byBgZHJ2ci1cdTAwM2VvcHMtXHUwMDNlZXh0ZXJuYWxfYXV0aGAuIFRoaXMgaXMgc3RhbmRhcmQgZHJpdmVyIGFyY2hpdGVjdHVyZTsgSSdtIHVzZWQgdG8gc2VlaW5nIGZ1bmN0aW9uIHBvaW50ZXJzIGhhbmRsZWQgdGhpcyB3YXkuXG5cbk5vdywgSSdtIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBhdHRhY2sgdmVjdG9ycy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgYGJyY21mbWFjYCBpbnN0YW5jZSBpcyB2dWxuZXJhYmxlIHZpYSBVU0IuIFRoYXQncyB3aGF0IEkgd2FudCB0byBuYWlsIGRvd24gbmV4dC4gSSdsbCBxdWlja2x5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGBDT05GSUdfQlJDTUZNQUNfVVNCYC4gVGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyB0aGUgY3J1Y2lhbCBpbmRpY2F0b3IgYXMgdG8gd2hldGhlciBVU0IgaXMgZXZlbiBhIHZhbGlkIHBhdGguIElmIGl0J3MgZW5hYmxlZCwgdGhlbiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSWYgbm90LCB0aGVuIEkgY2FuIG1vdmUgb24gdG8gb3RoZXIgYXJlYXMgb2YgaW50ZXJlc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MzgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0Mzo0MS41NDE2NjIxNzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyMjkwNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GTUFDX1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTE3PWNvbmZpZyBCUkNNRk1BQ19TRElPXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoyOTpjb25maWcgQlJDTUZNQUNfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXFx0Ym9vbCBcXFwiVVNCIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGU9MzY9YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfU0RJTykgKz0gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTM4LVxcdFxcdGJjbXNkaC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlOjM5OmJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgKz0gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00MC1cXHRcXHR1c2Iub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMyMz1zdGF0aWMgaW5saW5lIGludCBicmNtZl9zZGlvX3JlZ2lzdGVyKHZvaWQpIHsgcmV0dXJuIDA7IH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjMyNjojaWZkZWYgQ09ORklHX0JSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zMjctdm9pZCBicmNtZl91c2JfZXhpdCh2b2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0zMDI9c3RhdGljIGludCBicmNtZl91c2JfdHhfY3RscGt0KHN0cnVjdCBkZXZpY2UgKmRldiwgdTggKmJ1ZiwgdTMyIGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0zMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjMxNTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzE2LVxcdFxcdGVyciA9IC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MzQ3PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3J4X2N0bHBrdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4ICpidWYsIHUzMiBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMzU5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzozNjA6XFx0aWYgKGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgIT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTM2MS1cXHRcXHRlcnIgPSAtRUlPO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTUwNz1zdGF0aWMgdm9pZCBicmNtZl91c2JfcnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NTI1OlxcdGlmIChkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9VUCB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo1MjY6XFx0ICAgIGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1NMRUVQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTUyNy1cXHRcXHRza2JfcHV0KHNrYiwgdXJiLVxcdTAwM2VhY3R1YWxfbGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz01NzE9c3RhdGljIHZvaWQgYnJjbWZfdXNiX3J4X2ZpbGxfYWxsKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy01NzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjU3NTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTc2LVxcdFxcdGJyY21mX2VycihcXFwiYnVzIGlzIG5vdCB1cD0lZFxcXFxuXFxcIiwgZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NTg0PWJyY21mX3VzYl9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLCBpbnQgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk2LVxcdC8qIHVwZGF0ZSBzdGF0ZSBvZiB1cHBlciBsYXllciAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzo1OTc6XFx0aWYgKHN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTU5OC1cXHRcXHRicmNtZl9kYmcoVVNCLCBcXFwiREJVUyBpcyBkb3duXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNTk5LVxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYmNtZl9idXMsIEJSQ01GX0JVU19ET1dOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NjAwOlxcdH0gZWxzZSBpZiAoc3RhdGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTYwMS1cXHRcXHRicmNtZl9kYmcoVVNCLCBcXFwiREJVUyBpcyB1cFxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjA4PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3R4KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy02MjAtXFx0YnJjbWZfZGJnKFVTQiwgXFxcIkVudGVyLCBza2I9JXBcXFxcblxcXCIsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjYyMTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSAhPSBCUkNNRk1BQ19VU0JfU1RBVEVfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjIyLVxcdFxcdHJldCA9IC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9NjY1PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3VwKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy02NjktXFx0YnJjbWZfZGJnKFVTQiwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NjcwOlxcdGlmIChkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNjcxLVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3My1cXHQvKiBTdWNjZXNzLCBpbmRpY2F0ZSBkZXZpbmZvIGlzIGZ1bGx5IHVwICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjY3NDpcXHRicmNtZl91c2Jfc3RhdGVfY2hhbmdlKGRldmluZm8sIEJSQ01GTUFDX1VTQl9TVEFURV9VUCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTY3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz03MTQ9c3RhdGljIHZvaWQgYnJjbWZfdXNiX2Rvd24oc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTcyMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6NzIyOlxcdGlmIChkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID09IEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjMtXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy03MjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjcyNTpcXHRicmNtZl91c2Jfc3RhdGVfY2hhbmdlKGRldmluZm8sIEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtNzI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTk3Nj1zdGF0aWMgaW50IGJyY21mX3VzYl9kbHN0YXJ0KHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbywgdTggKmZ3LCBpbnQgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTk4OS1cXHRpZiAoZXJyID09IDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MDpcXHRcXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTk5MS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjk5MjpcXHRcXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX0RMX0ZBSUw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTk5My1cXHRicmNtZl9kYmcoVVNCLCBcXFwiRXhpdCwgZXJyPSVkXFxcXG5cXFwiLCBlcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTExMDM9c3RydWN0IGJyY21mX3VzYmRldiAqYnJjbWZfdXNiX2F0dGFjaChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTExMS1cXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLm50eHEgPSBudHhxO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTEyOlxcdGRldmluZm8tXFx1MDAzZWJ1c19wdWIuc3RhdGUgPSBCUkNNRk1BQ19VU0JfU1RBVEVfRE9XTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNDgzPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDg4LVxcdGJyY21mX2RiZyhVU0IsIFxcXCJFbnRlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE0ODk6XFx0ZGV2aW5mby1cXHUwMDNlYnVzX3B1Yi5zdGF0ZSA9IEJSQ01GTUFDX1VTQl9TVEFURV9TTEVFUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ5MC1cXHRicmNtZl9jYW5jZWxfYWxsX3VyYnMoZGV2aW5mbyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTQ5OD1zdGF0aWMgaW50IGJyY21mX3VzYl9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTUwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTUwNTpcXHRkZXZpbmZvLVxcdTAwM2VidXNfcHViLnN0YXRlID0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTA2LVxcdGJyY21mX3VzYl9yeF9maWxsX2FsbChkZXZpbmZvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaC00LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo1OiNpZm5kZWYgQlJDTUZNQUNfVVNCX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6NjojZGVmaW5lIEJSQ01GTUFDX1VTQl9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oPTg9ZW51bSBicmNtZl91c2Jfc3RhdGUge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDo5OlxcdEJSQ01GTUFDX1VTQl9TVEFURV9ET1dOLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuaDoxMDpcXHRCUkNNRk1BQ19VU0JfU1RBVEVfRExfRkFJTCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTE6XFx0QlJDTUZNQUNfVVNCX1NUQVRFX0RMX0RPTkUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjEyOlxcdEJSQ01GTUFDX1VTQl9TVEFURV9VUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg6MTM6XFx0QlJDTUZNQUNfVVNCX1NUQVRFX1NMRUVQXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oLTE0LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmg9MzU9c3RydWN0IGJyY21mX3VzYnJlcSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmgtNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5oOjQyOiNlbmRpZiAvKiBCUkNNRk1BQ19VU0JfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0Mzo0MS43MTM5NjA0OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODU5NDA3NDczNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIFVTQiBTdXBwb3J0IGluIHRoZSBgYnJjbWZtYWNgIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gdGhlIGBicmNtZm1hY2AgZHJpdmVyIGFuZCBJIHNlZW0gdG8gcmVjYWxsIGl0IGhhdmluZyBVU0Igc3VwcG9ydC4gTm93LCB3aGVyZSB3YXMgdGhhdCBwYXRjaD8gQWhhLCBpdCdzIG1lbnRpb25lZCBpbiBgYnJjbWZtYWMvY3l3L2NvcmUuY2AuIEludGVyZXN0aW5nLiBUaGUgbmV4dCBxdWVzdGlvbiBidXJuaW5nIGluIG15IG1pbmQgaXMsIGlzIHRoaXMgVVNCIGZ1bmN0aW9uYWxpdHkgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIEJyb2FkY29tIGNoaXBzZXQsIG9yIGlzIGl0IGEgbW9yZSBnZW5lcmFsIGltcGxlbWVudGF0aW9uIGFwcGxpY2FibGUgYWNyb3NzIHRoZSBgYnJjbWZtYWNgIGZhbWlseT8gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSwgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgaXRzZWxmLCBzbyBsZXQncyBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNgIGZvciBzb21lIGRldGFpbGVkIGluc2lnaHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTcyLCJPdXRwdXRUb2tlbnMiOjU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6MDAuMzA4MDM4MDI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NTMxODA0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jPTIwMD1icmNtZl9jeXdfZXh0ZXJuYWxfYXV0aChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMjM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjIzNjpzdGF0aWMgdm9pZCBicmNtZl9jeXdfZ2V0X2NmZzgwMjExX29wcyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTIzNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0zNzA9Y29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzczLVxcdC5hY3RpdmF0ZV9ldmVudHMgPSBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3NDpcXHQuZ2V0X2NmZzgwMjExX29wcyA9IGJyY21mX2N5d19nZXRfY2ZnODAyMTFfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jLTM3NS1cXHQucmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMgPSBicmNtZl9jeXdfcmVnaXN0ZXJfZXZlbnRfaGFuZGxlcnMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjAwLjk2MzM2NjU3NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNTAwMDA2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYnJjbWZfY3l3X29wcyBBc3NpZ25tZW50KipcblxuQWxyaWdodCwgc28gYGJyY21mX2N5d19vcHNgIGlzIGdldHRpbmcgaW5pdGlhbGl6ZWQgd2l0aCBgYnJjbWZfZnd2aWRfb3BzYC4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgbm90IG5lY2Vzc2FyaWx5IHVudXN1YWwuIEl0IHN1Z2dlc3RzIHRoYXQgdGhlIGRyaXZlcidzIHVuZGVybHlpbmcgb3BlcmF0aW9ucyBhcmUgYmVpbmcgbWFuYWdlZCBieSB0aGUgZmlybXdhcmUgdmlkZW8gaW50ZXJmYWNlLiBMZXQncyBzZWUgaG93IGBicmNtZl9jeXdfb3BzYCBpcyBhY3R1YWxseSAqdXNlZCouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAsIHNlZSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLiBVbmRlcnN0YW5kaW5nIHRoZSBwb2ludHMgb2YgY29tbW9uYWxpdHkgYW5kIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSB0d28gc3RydWN0dXJlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYXJjaGl0ZWN0dXJlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IHRoZSBmdW5jdGlvbnMgd2l0aGluIGBicmNtZl9jeXdfb3BzYCBhcmUgY2FsbGVkLiBUaGlzIGxpa2VseSBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUgZmlybXdhcmUgaW50ZXJhY3Rpb24gYW5kIHRoZSBkYXRhIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MTksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDowNS4wMTMzNzAzMzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTYwMTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jeXdfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM9MzU4PXN0YXRpYyB2b2lkIGJyY21mX2N5d19yZWdpc3Rlcl9ldmVudF9oYW5kbGVycyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jOjM3MDpjb25zdCBzdHJ1Y3QgYnJjbWZfZnd2aWRfb3BzIGJyY21mX2N5d19vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMtMzcxLVxcdC5zZXRfc2FlX3Bhc3N3b3JkID0gYnJjbWZfY3l3X3NldF9zYWVfcHdkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNC1cXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNTpcXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YnJjbWZfY3l3X29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNi19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC03LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oOjg6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaDo5OiNkZWZpbmUgQ1lXX1ZPUFNcXHQoXFx1MDAyNmJyY21mX2N5d19vcHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmgtMTAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjA1LjE4ODk3ODc4MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI3NDU4MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlJDTUZfRldWRU5ET1JfQ1lXIFZlbmRvcioqXG5cbk9rYXksIHNvIEkgc2VlIGEgbmV3IHZlbmRvciwgYEJSQ01GX0ZXVkVORE9SX0NZV2AsIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkNhbiB3ZSBpbnRlcmZhY2Ugd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmVuZG9yIHZpYSBVU0I/XCIgSXQncyBhIGtleSBxdWVzdGlvbiwgZ2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoaXMgYXJjaGl0ZWN0dXJlLiBMZXQgbWUgZGlnIGludG8gdGhlIGBicmNtZm1hY2AgbW9kdWxlIHRvIHNlZSBob3cgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXMgaGFuZGxlZCB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHN1cHBvcnRlZCB0cmFuc3BvcnRzIGFuZCB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gbW9kZWwgdG8gYW5zd2VyIHRoYXQgVVNCIHF1ZXN0aW9uIGRlZmluaXRpdmVseS4gVGhpcyBjb3VsZCBiZSBhIG5ldyBkZXZpY2Ugb3IgYW4gZXZvbHV0aW9uIG9mIGV4aXN0aW5nIHN1cHBvcnQuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc3NywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjA4LjIxNjQ0MTAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUyOTU5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfRldWRU5ET1JfQ1lXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTM0PWVudW0gYnJjbWZfZnd2ZW5kb3Ige1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zNS1cXHRCUkNNRl9GV1ZFTkRPUl9XQ0MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjM2OlxcdEJSQ01GX0ZXVkVORE9SX0NZVyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMzctXFx0QlJDTUZfRldWRU5ET1JfQkNBLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MTk1Nj1zdGF0aWMgczMyIGJyY21mX3NldF93cGFfdmVyc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTE5NjgtXFx0fSBlbHNlIGlmIChzbWUtXFx1MDAzZWNyeXB0by53cGFfdmVyc2lvbnMgXFx1MDAyNiBOTDgwMjExX1dQQV9WRVJTSU9OXzIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoxOTY5OlxcdFxcdGlmIChkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZWZ3dmlkID09IEJSQ01GX0ZXVkVORE9SX0NZVyBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTE5NzAtXFx0XFx0ICAgIHNtZS1cXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gPT0gV0xBTl9BS01fU1VJVEVfU0FFKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xMj1zdGF0aWMgaW50IF9faW5pdCBicmNtZl9jeXdfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM6MTQ6XFx0cmV0dXJuIGJyY21mX2Z3dmlkX3JlZ2lzdGVyX3ZlbmRvcihCUkNNRl9GV1ZFTkRPUl9DWVcsIFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTUtXFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmJyY21mX2N5d19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYz0xOD1zdGF0aWMgdm9pZCBfX2V4aXQgYnJjbWZfY3l3X2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjIwOlxcdGJyY21mX2Z3dmlkX3VucmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMjEtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfcGNpZV9kcnZkYXRhIGRydmRhdGFbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTctXFx0W0JSQ01GX0RSVkRBVEFfQ1lXXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI0MTg6XFx0XFx0LnZlbmRvciA9IEJSQ01GX0ZXVkVORE9SX0NZVyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI0MTktXFx0XFx0LmZ3X3NlZWQgPSBmYWxzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQzOT1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MzUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTM2OlxcdGNhc2UgQlJDTUZfRldWRU5ET1JfQ1lXOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUzNy1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDowOC40MDE4MDg2NzhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTE1NzY1MzI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgVmVuZG9yIEZpcm13YXJlIFVzYWdlIEFjcm9zcyBEcml2ZXJzKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBgQlJDTUZfRldWRU5ET1JfQ1lXYCBkZWZpbml0aW9uLiBJIHNlZSBpdCByZWZlcmVuY2VkIHdpdGhpbiBgcGNpZS5jYCwgYW5kIHRoYXQgdHJpZ2dlcnMgYSBxdWVzdGlvbjogV2hlcmUgZWxzZSBpcyB0aGlzIHZlbmRvciBmaXJtd2FyZSBwb3RlbnRpYWxseSBiZWluZyB1c2VkPyBNeSBpbW1lZGlhdGUgY29uY2VybiBpcywgaXMgaXQgYWxzbyB1dGlsaXplZCBpbiB0aGUgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGB1c2IuY2A/IFRoaXMgaXMgY3JpdGljYWwgZm9yIGFzc2Vzc2luZyB0aGUgYnJvYWRlciBpbXBhY3QgYW5kIGRlcGVuZGVuY2llcyBvZiB0aGF0IHBhcnRpY3VsYXIgZmlybXdhcmUsIGFuZCBlbnN1cmluZyBpdOKAmXMgaGFuZGxlZCBjb25zaXN0ZW50bHkgYWNyb3NzIGFsbCByZWxldmFudCBkZXZpY2UgY29udGV4dHMuIEkgbmVlZCB0byB0cmFjayB0aGlzIGRvd24gdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTExODMsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDoxNy41NTk0Njk3MTJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDI2MTA4MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfRldWRU5ET1JfQ1lXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6MTcuNzg5Nzc2MTQyWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODQ2Mjk3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gYGZ3dmlkYCBpbiBgdXNiLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBmd3ZpZGAgdmFyaWFibGUgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgYW5kIG1vZGlmaWVkIHdpdGhpbiB0aGUgYHVzYi5jYCBmaWxlLiBUaGlzIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZy91bmRlcnN0YW5kaW5nIHNvbWUgcmVjZW50IGJlaGF2aW9yIEkndmUgb2JzZXJ2ZWQuIEknbGwgbmVlZCB0byB0cmFjZSB0aGUgcmVmZXJlbmNlcywgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWxzIG9yIGFzc2lnbm1lbnRzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgaXRzIHZhbHVlLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGB1c2IuY2AgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGFueSBleHRlcm5hbCBzb3VyY2VzLiBMZXQncyBzdGFydCBieSBtZXRob2RpY2FsbHkgc2VhcmNoaW5nIGZvciBpbnN0YW5jZXMgb2YgYGZ3dmlkYCBhbmQgc2VlIHdoYXQgdGhlIGNvZGUgYXJvdW5kIGl0IHRlbGxzIHVzLiBUaGlzIG1pZ2h0IGxlYWQgbWUgZG93biBhIHJhYmJpdCBob2xlLCBidXQgaG9wZWZ1bGx5LCBJIGNhbiByZWNvbnN0cnVjdCB0aGUgbG9naWNhbCBmbG93IHJlbGF0ZWQgdG8gdGhpcyBwYXJhbWV0ZXIgYW5kIGl0cyBzaWduaWZpY2FuY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDIxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6MjIuMDc0NDA5NzA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQyODAwOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnd2aWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjQ0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI0NTpcXHRcXHRcXHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XFx0YnVzLVxcdTAwM2Vmd3ZpZCA9IGZ3dmlkO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjcxLVxcdGJ1cy1cXHUwMDNlYWx3YXlzX3VzZV9md3NfcXVldWUgPSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDoyMi4yMDg2OTk1NjFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMwODYyNTYyMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBicmNtZl91c2JfcHJvYmVfY2JgKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHRyaWdnZXJpbmcgYGJyY21mX3VzYl9wcm9iZV9jYmAuIEknbSBzdGFydGluZyBieSB0cmFjaW5nIGJhY2sgdGhlIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24sIHdoaWNoIGlzIHVzdWFsbHkgdGhlIGJlc3QgYXBwcm9hY2ggd2hlbiBkZWFsaW5nIHdpdGggYSBkZXZpY2UgZHJpdmVyJ3MgcHJvYmUgY2FsbGJhY2suIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBwcm9iYWJseSBzdGFydGluZyB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtJ3MgY29yZSBwcm9iZSBtZWNoYW5pc21zLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCBvciBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gVVNCLXJlbGF0ZWQgc3RydWN0dXJlcyBvciBmdW5jdGlvbnMuXG5cbkknbSBtZW50YWxseSBtYXBwaW5nIHRoZSBVU0IgZHJpdmVyIGluaXRpYWxpemF0aW9uIGFuZCByZWdpc3RyYXRpb24gcHJvY2Vzcy4gVGhpbmtpbmcgdGhyb3VnaCB0aGUgYHVzYl9kcml2ZXJgIHN0cnVjdHVyZSBhbmQgaXRzIG1lbWJlcnMsIEknbSBleHBlY3RpbmcgdG8gZmluZCBgYnJjbWZfdXNiX3Byb2JlX2NiYCByZWZlcmVuY2VkIHRoZXJlLCBvciBwZXJoYXBzIHdpdGhpbiBhIHBsYXRmb3JtLXNwZWNpZmljIHNldHVwIGZ1bmN0aW9uIGZvciB0aGUgQnJvYWRjb20gZGV2aWNlLiBJIGFudGljaXBhdGUgdGhpcyB3aWxsIGludm9sdmUgdW5kZXJzdGFuZGluZyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgVVNCIGNvcmUsIHRoZSBkZXZpY2UncyBkZXNjcmlwdG9ycywgYW5kIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gSSdtIHRyeWluZyB0byBpZGVudGlmeSB0aGUgcGF0aCB0aGF0IGxlYWRzIGZyb20gYSBkZXZpY2UgaW5zZXJ0aW9uIG9yIGVudW1lcmF0aW9uIGV2ZW50IHRvIHRoaXMgc3BlY2lmaWMgY2FsbGJhY2sgYmVpbmcgaW52b2tlZC4gSSdsbCBiZSB0aGlua2luZyBhYm91dCBob3cgZGV2aWNlIElEcyBhcmUgbWF0Y2hlZCwgYW5kIGhvdyB0aGUgZHJpdmVyIGdldHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYXJkd2FyZS5cblxuSSdtIG1lbnRhbGx5IHByZXBhcmluZyBmb3IgcG90ZW50aWFsIGNvbXBsaWNhdGlvbnMuIFRoZSBjYWxsIGNoYWluIGNvdWxkIGJlIGluZGlyZWN0LCBpbnZvbHZpbmcgbXVsdGlwbGUgbGF5ZXJzIG9mIGFic3RyYWN0aW9uLiBJJ2xsIHdhdGNoIG91dCBmb3IgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgaWYgdGhpcyBpcyBhIGhvdHBsdWcgc2NlbmFyaW8uIEFsc28sIEknbGwga2VlcCBhbiBleWUgb3V0IGZvciBwb3RlbnRpYWwgaXNzdWVzIGFyaXNpbmcgZnJvbSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgVVNCIGNvcmUgYW5kIGFueSBzcGVjaWZpYyBxdWlya3Mgb2YgdGhlIEJyb2FkY29tIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uLiBJIGtub3cgdGhlc2UgZGV2aWNlcyBjYW4gYmUgdHJpY2t5IGFuZCBtYXkgcmVxdWlyZSBjdXN0b20gcHJvYmluZyBzZXF1ZW5jZXMsIHNvIEknbGwgYmUgbG9va2luZyBmb3IgdGhvc2UgdG9vLiBJJ2xsIGZvY3VzIG9uIHRoZSBkYXRhIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBVU0IgZGV2aWNlLCBwYXJ0aWN1bGFybHkgdGhlIGRldmljZSwgaW50ZXJmYWNlIGFuZCBlbmRwb2ludCBzdHJ1Y3R1cmVzLCBhbmQgdGhlbiB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdG8gdHJhY2sgdGhlIGNhbGwgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NTQsIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDo0NS4yOTQ5NTg3NTdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODE0OTA2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcHJvYmVfY2JcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMjI0PWJyY21mX3VzYl9wcmVwYXJlX2Z3X3JlcXVlc3Qoc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNDQ6c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQ1LVxcdFxcdFxcdCAgICAgIGVudW0gYnJjbWZfZnd2ZW5kb3IgZnd2aWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0Mj1icmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDQzOlxcdHJldCA9IGJyY21mX3VzYl9wcm9iZV9jYihkZXZpbmZvLCBpZC1cXHUwMDNlZHJpdmVyX2luZm8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQ0LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjQ1LjQ5MzExNzI0M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjU0NTg2MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBVU0IgZHJpdmVyIGRldmVsb3BtZW50OlxuXG4qKkFuYWx5emluZyB0aGUgRGF0YSBGbG93OiBgaWQtXHUwMDNlZHJpdmVyX2luZm9gIGFuZCBgZnd2aWRgKipcblxuUmlnaHQsIHNvIGBpZC1cdTAwM2Vkcml2ZXJfaW5mb2AgaXMgYmVpbmcgcGFzc2VkIGFyb3VuZCwgc3BlY2lmaWNhbGx5IGFzIGBmd3ZpZGAuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgZnd2aWRgIHZhbHVlIGlzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBgdXNiLmNgIGZpbGUuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGRhdGEgYW5kIHNlZSB3aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgd2l0aCB0aG9zZSBzcGVjaWZpYyBgZHJpdmVyX2luZm9gIHZhbHVlcy4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSwgb3IgYXQgbGVhc3QgaW5pdGlhbGl6YXRpb24gc3RlcHMsIGZvciB0aGUgZGV2aWNlIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgVVNCIHN1YnN5c3RlbS4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBtZWFuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgxOCwiT3V0cHV0VG9rZW5zIjo1MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjUwLjE0NzczMjA5MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MTEzOTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GX0ZXVkVORE9SX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1MTE9c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MzMtXFx0XFx0VVNCX0RFVklDRShCUkNNX1VTQl9WRU5ET1JfSURfQlJPQURDT00sIGRldl9pZCksIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTUzNDpcXHRcXHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTM5LVxcdFxcdFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xJTktTWVMsIGRldl9pZCksIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU0MDpcXHRcXHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQxLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQ1LVxcdFxcdFVTQl9ERVZJQ0UoQ1lfVVNCX1ZFTkRPUl9JRF9DWVBSRVNTLCBkZXZfaWQpLCBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NDY6XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU0Ny1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjUwLjM2Mjg2NzgyNVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc5NzUwNzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIFRoaXMgYEJSQ01GX0ZXVkVORE9SX1dDQ2Ag4oCTIGhvbGQgb24sIGlzIHRoaXMgYWN0dWFsbHkgdXNlZCBhY3Jvc3MgKmFsbCogVVNCIGRldmljZXM/IFRoYXQgY2FuJ3QgYmUgcmlnaHQuIExldCdzIGRpZyBkZWVwZXIgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB3aGF0J3MgZ29pbmcgb24uXG5cbioqSW52ZXN0aWdhdGluZyBVU0IgRGV2aWNlIEZpcm13YXJlIExvYWRpbmcqKlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzIHF1aWNrbHkuIE15IGluc3RpbmN0cyB0ZWxsIG1lIHNvbWV0aGluZyBpcyBhbWlzcyBoZXJlLiBMZXQgbWUgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNgLiBTcGVjaWZpY2FsbHksIGFyb3VuZCBsaW5lIDE1MzMgc2hvdWxkIHByb3ZpZGUgc29tZSBpbnNpZ2h0LiBJJ20gZ29pbmcgdG8gbG9vayBjbG9zZWx5IGF0IHRoYXQgc2VjdGlvbiB0byBzZWUgaG93IGBCUkNNRl9GV1ZFTkRPUl9XQ0NgIGlzIGFjdHVhbGx5IGltcGxlbWVudGVkIGFuZCB0byBzZWUgaWYgbXkgaW5pdGlhbCBzdXNwaWNpb25zIGFyZSBjb3JyZWN0LiBUaGlzIHNlZW1zIGxpa2UgaXQgd2FycmFudHMgYSBkZWVwZXIgZGl2ZSBhbmQgSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciB2YXJpYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1MzksIk91dHB1dFRva2VucyI6NTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDo1NC41NDI2MjM5MDVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTMwOlxcdFxcbjE1MzE6XFx0I2RlZmluZSBCUkNNRl9VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbjE1MzI6XFx0XFx0eyBcXFxcXFxuMTUzMzpcXHRcXHRcXHRVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcXFxcbjE1MzQ6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG4xNTM1OlxcdFxcdH1cXG4xNTM2OlxcdFxcbjE1Mzc6XFx0I2RlZmluZSBMSU5LU1lTX1VTQl9ERVZJQ0UoZGV2X2lkKSBcXFxcXFxuMTUzODpcXHRcXHR7IFxcXFxcXG4xNTM5OlxcdFxcdFxcdFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xJTktTWVMsIGRldl9pZCksIFxcXFxcXG4xNTQwOlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxcXFxuMTU0MTpcXHRcXHR9XFxuMTU0MjpcXHRcXG4xNTQzOlxcdCNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbjE1NDQ6XFx0XFx0eyBcXFxcXFxuMTU0NTpcXHRcXHRcXHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbjE1NDY6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG4xNTQ3OlxcdFxcdH1cXG4xNTQ4OlxcdFxcbjE1NDk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xcbjE1NTA6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzE0M19ERVZJQ0VfSUQpLFxcbjE1NTE6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNl9ERVZJQ0VfSUQpLFxcbjE1NTI6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzI0Ml9ERVZJQ0VfSUQpLFxcbjE1NTM6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzU2OV9ERVZJQ0VfSUQpLFxcbjE1NTQ6XFx0XFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcXG4xNTU1OlxcdFxcdENZUFJFU1NfVVNCX0RFVklDRShDWV9VU0JfNDM3M19ERVZJQ0VfSUQpLFxcbjE1NTY6XFx0XFx0eyBVU0JfREVWSUNFKEJSQ01fVVNCX1ZFTkRPUl9JRF9MRywgQlJDTV9VU0JfNDMyNDJfTEdfREVWSUNFX0lEKSB9LFxcbjE1NTc6XFx0XFx0Lyogc3BlY2lhbCBlbnRyeSBmb3IgZGV2aWNlIHdpdGggZmlybXdhcmUgbG9hZGVkIGFuZCBydW5uaW5nICovXFxuMTU1ODpcXHRcXHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXFxuMTU1OTpcXHRcXHRDWVBSRVNTX1VTQl9ERVZJQ0UoQlJDTV9VU0JfQkNNRldfREVWSUNFX0lEKSxcXG4xNTYwOlxcdFxcdHsgLyogZW5kOiBhbGwgemVyb2VzICovIH1cXG4xNTYxOlxcdH07XFxuMTU2MjpcXHRcXG4xNTYzOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBicmNtZl91c2JfZGV2aWRfdGFibGUpO1xcbjE1NjQ6XFx0XFxuMTU2NTpcXHRzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYnJjbWZfdXNiZHJ2ciA9IHtcXG4xNTY2OlxcdFxcdC5uYW1lID0gS0JVSUxEX01PRE5BTUUsXFxuMTU2NzpcXHRcXHQucHJvYmUgPSBicmNtZl91c2JfcHJvYmUsXFxuMTU2ODpcXHRcXHQuZGlzY29ubmVjdCA9IGJyY21mX3VzYl9kaXNjb25uZWN0LFxcbjE1Njk6XFx0XFx0LmlkX3RhYmxlID0gYnJjbWZfdXNiX2RldmlkX3RhYmxlLFxcbjE1NzA6XFx0XFx0LnN1c3BlbmQgPSBicmNtZl91c2Jfc3VzcGVuZCxcXG4xNTcxOlxcdFxcdC5yZXN1bWUgPSBicmNtZl91c2JfcmVzdW1lLFxcbjE1NzI6XFx0XFx0LnJlc2V0X3Jlc3VtZSA9IGJyY21mX3VzYl9yZXNldF9yZXN1bWUsXFxuMTU3MzpcXHRcXHQuc3VwcG9ydHNfYXV0b3N1c3BlbmQgPSB0cnVlLFxcbjE1NzQ6XFx0XFx0LmRpc2FibGVfaHViX2luaXRpYXRlZF9scG0gPSAxLFxcbjE1NzU6XFx0fTtcXG4xNTc2OlxcdFxcbjE1Nzc6XFx0c3RhdGljIGludCBicmNtZl91c2JfcmVzZXRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqbm90dXNlZClcXG4xNTc4OlxcdHtcXG4xNTc5OlxcdFxcdC8qIGRldmljZSBwYXN0IGlzIHRoZSB1c2IgaW50ZXJmYWNlIHNvIHdlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ0OjU0LjU0Mjk0NjkwNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTU4NjIyMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHN1bW1hcnk6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBCUkNNRiBGaXJtd2FyZSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIGl0IGxvb2tzIGxpa2UgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXNuJ3QgYWN0dWFsbHkgbGV2ZXJhZ2VkIHdpdGhpbiB0aGUgYHVzYi5jYCBkcml2ZXIgY29kZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRpbWUgdG8gc2hpZnQgZm9jdXMgYW5kIHNlZSBpZiBpdCdzIGJlaW5nIHV0aWxpemVkIGVsc2V3aGVyZS4gTGV0J3MgcGl2b3Qgb3VyIGF0dGVudGlvbiBvdmVyIHRvIGBzZGlvLmNgLiBIb3BlZnVsbHksIHRoZSBhbnN3ZXIgbGllcyB3aXRoaW4gdGhhdCBmaWxlLiBJIGhhdmUgYSBmZWVsaW5nIHRoZSBmaXJtd2FyZSB2ZW5kb3Igc2VsZWN0aW9uIGlzIGxpa2VseSBoYW5kbGVkIHRoZXJlLCBjb25zaWRlcmluZyB0aGUgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgY29tbW9uIHVzZS1jYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDc5NiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDQ6NTcuNzAxNTcyODYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzE4MjY3MDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSQ01GX0ZXVkVORE9SX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NDo1Ny44MzM0MjMwOTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5MzM2MzM3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2Vzcywga25vd2luZyBmdWxsIHdlbGwgd2hhdCBJJ20gbG9va2luZyBmb3I6XG5cbioqQkNNU0RILkM6IEluaXRpYWwgU2NhbioqXG5cbkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgdG8gb3BlbiBhbmQgZXhhbWluZSBgYmNtc2RoLmNgLiBJIG5lZWQgdG8gZ2V0IGEgaGlnaC1sZXZlbCB2aWV3IG9mIHRoaXMgZmlsZSBxdWlja2x5LiBHaXZlbiB0aGUgbmFtZSwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHJlbGF0ZWQgdG8gdGhlIEJyb2FkY29tIFNESCBpbnRlcmZhY2Ugb3IgYXNzb2NpYXRlZCBkcml2ZXJzLiBUaGF0J3MgbXkgc3RhcnRpbmcgYXNzdW1wdGlvbiwgYW55d2F5LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LlxuXG5NeSBpbml0aWFsIHNjYW4gd2lsbCBpbnZvbHZlOlxuXG4qICAgKipIZWFkZXIgaW5jbHVzaW9ucyoqOiBJJ20gbG9va2luZyBmb3IgdGhlIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlcywgb2J2aW91c2x5LCBidXQgYWxzbyBzcGVjaWZpYyBvbmVzIHRoYXQgaGludCBhdCB0aGUgaGFyZHdhcmUgb3IgbGlicmFyaWVzIGl0IGludGVyYWN0cyB3aXRoIChlLmcuIEJyb2FkY29tIFNESyBoZWFkZXJzLCBzcGVjaWZpYyBTREggY2hpcHNldHMsIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcykuIFRoZXNlIGluY2x1c2lvbnMgZ2l2ZSBtZSBjb250ZXh0LlxuKiAgICoqR2xvYmFsIHZhcmlhYmxlcyBhbmQgc3RydWN0dXJlcyoqOiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgZGVmaW5lZCBhbmQgdXNlZCBoZXJlPyBBbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZXMgb3IgYnVmZmVycz8gVGhlc2Ugd2lsbCBwcm92aWRlIGhpbnRzIGFib3V0IGhvdyB0aGUgbW9kdWxlIG1hbmFnZXMgdGhlIFNESCBpbnRlcmZhY2UuIEknbSBzY2FubmluZyBmb3IgXCJpbnRlcmVzdGluZ1wiIG5hbWVzIHRvbzogYW55IG9idmlvdXMgaGFyZHdhcmUgcmVnaXN0ZXJzLCBlcnJvciBjb2Rlcywgc3RhdGVzLCBldGMuIHRoYXQgZ2l2ZSBtZSBhIGNsZWFyZXIgaWRlYSBvZiB0aGUgbW9kdWxlJ3MgZnVuY3Rpb24uXG4qICAgKipGdW5jdGlvbiBwcm90b3R5cGVzKio6IEEgcXVpY2sgcmVhZCBvZiB0aGUgcHJvdG90eXBlcyB0ZWxscyBtZSB3aGljaCBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuIFRoaXMgZ2l2ZXMgYSBmaXJzdCBndWVzcyBhcyB0byB0aGUgbW9kdWxlJ3MgaW50ZW5kZWQgcm9sZS4gQXJlIHRoZXNlIGluaXRpYWxpemF0aW9uLCBkYXRhIHRyYW5zZmVyLCBjb250cm9sIG9yIGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9ucz9cbiogICAqKktleSBmdW5jdGlvbnMqKjogSWYgdGhlIHByZXZpb3VzIHN0ZXAgZGlkbid0IGdpdmUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgdGhlIGZpbGUgZG9lcywgb3IgaWYgYSBzcGVjaWZpYyBmdW5jdGlvbiBuYW1lIGNhdGNoZXMgbXkgZXllLCBJJ2xsIGdvIHN0cmFpZ2h0IHRvIGl0cyBkZWZpbml0aW9uIGFuZCB1bmRlcnN0YW5kIGhvdyBpdCB3b3JrcyBhbmQgd2hhdCBpdCBkb2VzLlxuXG5JJ20gYWltaW5nIHRvIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB0aGlzIGZpbGUncyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIGNsdWVzIHRvIHRoZSBzcGVjaWZpYyBTREgtcmVsYXRlZCBmdW5jdGlvbmFsaXR5IHRoaXMgY29kZSBwcm92aWRlcy4gU28sIGxldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAyMywiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjAzLjcyNjc5MDA4NFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkxODg1NjE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUkNNRl9GV1ZFTkRPUl9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYz05MDA9aW50IGJyY21mX3NkaW9kX3Byb2JlKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NjgtXFx0XFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQlJPQURDT00sIGRldl9pZCksIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6OTY5OlxcdFxcdC5kcml2ZXJfZGF0YSA9IEJSQ01GX0ZXVkVORE9SXyAjIyBmd192ZW5kIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtOTcwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NzQtXFx0XFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzo5NzU6XFx0XFx0LmRyaXZlcl9kYXRhID0gQlJDTUZfRldWRU5ET1JfICMjIGZ3X3ZlbmQgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy05NzYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NTowNS42NDU2NjQxMjRaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY4ODIwODk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIENvZGU6IFBpbnBvaW50aW5nIHRoZSBBcmVhIG9mIEludGVyZXN0KipcblxuT2theSwgc28gSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZy4gQmFzZWQgb24gdGhlIGNvbnRleHQgKHdoaWNoIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIGxhY2sgb2Ygc3BlY2lmaWMgZGV0YWlscyBpbiB0aGUgcHJvbXB0ISksIGl0IHNvdW5kcyBsaWtlIHRoZXJlJ3MgYW4gaXNzdWUgb3Igc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgbXkgYXR0ZW50aW9uIHdpdGhpbiB0aGUgYGJjbXNkaC5jYCBmaWxlLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBhbHJlYWR5IGZvcm11bGF0aW5nIGEgbWVudGFsIG1vZGVsIG9mIHdoZXJlIHBvdGVudGlhbCBwcm9ibGVtcyBvciByZWxldmFudCBmdW5jdGlvbmFsaXR5IG1pZ2h0IHJlc2lkZSB3aXRoaW4gdGhhdCBtb2R1bGUuIE15IGluaXRpYWwgc3RyYXRlZ3kgaXMgdG8gemVybyBpbiBvbiBsaW5lIDk2OC4gVGhhdCBzcGVjaWZpYyBsaW5lIG51bWJlciBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gYXJvdW5kIHRoYXQgYXJlYSB0byBnZXQgYSBmZWVsIGZvciB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdW5kZXJzdGFuZCBpdHMgaW1tZWRpYXRlIGNvbnRleHQuIEhvcGVmdWxseSwgbGluZSA5NjggaXMgaW4gYSBmdW5jdGlvbiwgbG9vcCwgb3IgYmxvY2sgdGhhdCByZWxhdGVzIHRvIHRoZSBwcm9ibGVtIGF0IGhhbmQsIG9yIHRoYXQgd2lsbCBwcm92aWRlIG1lIHdpdGggY2x1ZXMgYXMgdG8gd2hlcmUgaXQgaXMuIEknbGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMsIHZhcmlhYmxlIG5hbWVzLCBhbmQgY29udHJvbCBmbG93IHRoYXQgcHJvdmlkZSBjbHVlcy4gSWYgbGluZSA5NjggaXRzZWxmIGRvZXNuJ3QgeWllbGQgaW1tZWRpYXRlIGFuc3dlcnMsIEknbGwgYmUgcHJlcGFyZWQgdG8gZXhwYW5kIG15IHNlYXJjaCB3aXRoaW4gdGhlIHN1cnJvdW5kaW5nIGJsb2NrcyBvZiBjb2RlIGFib3ZlIGFuZCBiZWxvdyB0aGF0IGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODU0LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MTEuMzMzODc2MjI1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDk0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk2MDpcXHRcXHRpZiAocmV0KVxcbiA5NjE6XFx0XFx0XFx0YnJjbWZfc2Rpb2RfcmVtb3ZlKHNkaW9kZXYpO1xcbiA5NjI6XFx0XFxuIDk2MzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA5NjQ6XFx0fVxcbiA5NjU6XFx0XFxuIDk2NjpcXHQjZGVmaW5lIEJSQ01GX1NESU9fREVWSUNFKGRldl9pZCwgZndfdmVuZCkgXFxcXFxcbiA5Njc6XFx0XFx0eyBcXFxcXFxuIDk2ODpcXHRcXHRcXHRTRElPX0RFVklDRShTRElPX1ZFTkRPUl9JRF9CUk9BRENPTSwgZGV2X2lkKSwgXFxcXFxcbiA5Njk6XFx0XFx0XFx0LmRyaXZlcl9kYXRhID0gQlJDTUZfRldWRU5ET1JfICMjIGZ3X3ZlbmQgXFxcXFxcbiA5NzA6XFx0XFx0fVxcbiA5NzE6XFx0XFxuIDk3MjpcXHQjZGVmaW5lIENZV19TRElPX0RFVklDRShkZXZfaWQsIGZ3X3ZlbmQpIFxcXFxcXG4gOTczOlxcdFxcdHsgXFxcXFxcbiA5NzQ6XFx0XFx0XFx0U0RJT19ERVZJQ0UoU0RJT19WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbiA5NzU6XFx0XFx0XFx0LmRyaXZlcl9kYXRhID0gQlJDTUZfRldWRU5ET1JfICMjIGZ3X3ZlbmQgXFxcXFxcbiA5NzY6XFx0XFx0fVxcbiA5Nzc6XFx0XFxuIDk3ODpcXHQvKiBkZXZpY2VzIHdlIHN1cHBvcnQsIG51bGwgdGVybWluYXRlZCAqL1xcbiA5Nzk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzZGlvX2RldmljZV9pZCBicmNtZl9zZG1tY19pZHNbXSA9IHtcXG4gOTgwOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMTQzLCBXQ0MpLFxcbiA5ODE6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMyNDEsIFdDQyksXFxuIDk4MjpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzI5LCBXQ0MpLFxcbiA5ODM6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzMCwgV0NDKSxcXG4gOTg0OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQsIFdDQyksXFxuIDk4NTpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM0MCwgV0NDKSxcXG4gOTg2OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzQxLCBXQ0MpLFxcbiA5ODc6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDMzNjIsIFdDQyksXFxuIDk4ODpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzM2NCwgV0NDKSxcXG4gOTg5OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzVfNDMzOSwgV0NDKSxcXG4gOTkwOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzMzksIFdDQyksXFxuIDk5MTpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzQzMCwgV0NDKSxcXG4gOTkyOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDM5LCBXQ0MpLFxcbiA5OTM6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM0NSwgV0NDKSxcXG4gOTk0OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNDU1LCBXQ0MpLFxcbiA5OTU6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM1NCwgV0NDKSxcXG4gOTk2OlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NXzQzNTYsIFdDQyksXFxuIDk5NzpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80MzU5LCBXQ0MpLFxcbiA5OTg6XFx0XFx0QlJDTUZfU0RJT19ERVZJQ0UoU0RJT19ERVZJQ0VfSURfQlJPQURDT01fNDM3NTEsIFdDQyksXFxuIDk5OTpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV80Mzc1MiwgV0NDKSxcXG4xMDAwOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM3MywgQ1lXKSxcXG4xMDAxOlxcdFxcdEJSQ01GX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDMwMTIsIENZVyksXFxuMTAwMjpcXHRcXHRCUkNNRl9TRElPX0RFVklDRShTRElPX0RFVklDRV9JRF9CUk9BRENPTV9DWVBSRVNTXzg5MzU5LCBDWVcpLFxcbjEwMDM6XFx0XFx0Q1lXX1NESU9fREVWSUNFKFNESU9fREVWSUNFX0lEX0JST0FEQ09NX0NZUFJFU1NfNDM0MzksIENZVyksXFxuMTAwNDpcXHRcXHR7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9XFxuMTAwNTpcXHR9O1xcbjEwMDY6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShzZGlvLCBicmNtZl9zZG1tY19pZHMpO1xcbjEwMDc6XFx0XFxuMTAwODpcXHRcXG4xMDA5OlxcdHN0YXRpYyB2b2lkIGJyY21mX3NkaW9kX2FjcGlfc2F2ZV9wb3dlcl9tYW5hZ2VhYmxlKHN0cnVjdCBicmNtZl9zZGlvX2RldiAqc2Rpb2RldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MTEuMzM1Nzg4OTM1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzODU2NjU1NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqU0RJTyBGdXp6aW5nIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgQlJDTUZfU0RJT19ERVZJQ0VgIHRoaW5nLCBzcGVjaWZpY2FsbHkgdGhlIG9uZSB1c2luZyBgQ1lXYC4gUmlnaHQsIGBDWVdgIGlzIGJlaW5nIHJlYWNoZWQgdGhyb3VnaCBTRElPLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcgdGhpcy4gQ2FuIHdlIGZ1enogU0RJTz8gSSd2ZSBnb3QgdG8gY29uc2lkZXIgYWxsIGFuZ2xlcyBoZXJlLiBJIGtub3cgU3l6a2FsbGVyIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGEgKmdlbmVyaWMqIFNESU8gZnV6emVyLiBIb2xkIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrLi4uIG5vLCBkZWZpbml0ZWx5IG5vIGJ1aWx0LWluLCBnZW5lcmljIFNESU8gZnV6emluZyBpbiBTeXprYWxsZXIuIEhtbS4gV2FpdCBhIG1pbnV0ZeKApiBXaGF0IGFib3V0IHRoZSBgcGNpZS5jYCBmdXp6aW5nIG1vZHVsZXM/IENvdWxkIHRoZXJlIGJlIGFuIGFwcHJvYWNoIHRvIGJ1aWxkIGZyb20gdGhhdD8gSSBuZWVkIHRvIGV4cGxvcmUgdGhpcyByb3V0ZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ3MCwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjE5LjcyMTQ1ODI1MVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODgzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDEwOlxcdFxcdEJSQ01GX0RSVkRBVEFfQ1lXLFxcbjI0MTE6XFx0XFx0QlJDTUZfRFJWREFUQV9CQ0EsXFxuMjQxMjpcXHRcXHRCUkNNRl9EUlZEQVRBX1dDQyxcXG4yNDEzOlxcdFxcdEJSQ01GX0RSVkRBVEFfV0NDX1NFRUQsXFxuMjQxNDpcXHR9O1xcbjI0MTU6XFx0XFxuMjQxNjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX3BjaWVfZHJ2ZGF0YSBkcnZkYXRhW10gPSB7XFxuMjQxNzpcXHRcXHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xcbjI0MTg6XFx0XFx0XFx0LnZlbmRvciA9IEJSQ01GX0ZXVkVORE9SX0NZVyxcXG4yNDE5OlxcdFxcdFxcdC5md19zZWVkID0gZmFsc2UsXFxuMjQyMDpcXHRcXHR9LFxcbjI0MjE6XFx0XFx0W0JSQ01GX0RSVkRBVEFfQkNBXSA9IHtcXG4yNDIyOlxcdFxcdFxcdC52ZW5kb3IgPSBCUkNNRl9GV1ZFTkRPUl9CQ0EsXFxuMjQyMzpcXHRcXHRcXHQuZndfc2VlZCA9IGZhbHNlLFxcbjI0MjQ6XFx0XFx0fSxcXG4yNDI1OlxcdFxcdFtCUkNNRl9EUlZEQVRBX1dDQ10gPSB7XFxuMjQyNjpcXHRcXHRcXHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfV0NDLFxcbjI0Mjc6XFx0XFx0XFx0LmZ3X3NlZWQgPSBmYWxzZSxcXG4yNDI4OlxcdFxcdH0sXFxuMjQyOTpcXHRcXHRbQlJDTUZfRFJWREFUQV9XQ0NfU0VFRF0gPSB7XFxuMjQzMDpcXHRcXHRcXHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfV0NDLFxcbjI0MzE6XFx0XFx0XFx0LmZ3X3NlZWQgPSB0cnVlLFxcbjI0MzI6XFx0XFx0fSxcXG4yNDMzOlxcdH07XFxuMjQzNDpcXHRcXG4yNDM1OlxcdC8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHBjaV9tYXRjaF9pZCgpIGNhbGwgKi9cXG4yNDM2OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW107XFxuMjQzNzpcXHRcXG4yNDM4OlxcdHN0YXRpYyBpbnRcXG4yNDM5OlxcdGJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4yNDQwOlxcdHtcXG4yNDQxOlxcdFxcdGludCByZXQ7XFxuMjQ0MjpcXHRcXHRzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXE7XFxuMjQ0MzpcXHRcXHRzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvO1xcbjI0NDQ6XFx0XFx0c3RydWN0IGJyY21mX3BjaWVkZXYgKnBjaWVfYnVzX2RldjtcXG4yNDQ1OlxcdFxcdHN0cnVjdCBicmNtZl9jb3JlICpjb3JlO1xcbjI0NDY6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzO1xcbjI0NDc6XFx0XFxuMjQ0ODpcXHRcXHRpZiAoIWlkKSB7XFxuMjQ0OTpcXHRcXHRcXHRpZCA9IHBjaV9tYXRjaF9pZChicmNtZl9wY2llX2RldmlkX3RhYmxlLCBwZGV2KTtcXG4yNDUwOlxcdFxcdFxcdGlmICghaWQpIHtcXG4yNDUxOlxcdFxcdFxcdFxcdHBjaV9lcnIocGRldiwgXFxcIkVycm9yIGNvdWxkIG5vdCBmaW5kIHBjaV9kZXZpY2VfaWQgZm9yICV4OiV4XFxcXG5cXFwiLCBwZGV2LVxcdTAwM2V2ZW5kb3IsIHBkZXYtXFx1MDAzZWRldmljZSk7XFxuMjQ1MjpcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4yNDUzOlxcdFxcdFxcdH1cXG4yNDU0OlxcdFxcdH1cXG4yNDU1OlxcdFxcbjI0NTY6XFx0XFx0YnJjbWZfZGJnKFBDSUUsIFxcXCJFbnRlciAleDoleFxcXFxuXFxcIiwgcGRldi1cXHUwMDNldmVuZG9yLCBwZGV2LVxcdTAwM2VkZXZpY2UpO1xcbjI0NTc6XFx0XFxuMjQ1ODpcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjI0NTk6XFx0XFx0ZGV2aW5mbyA9IGt6YWxsb2Nfb2JqKCpkZXZpbmZvKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MTkuNzIyMDQ5ODExWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjI5MzA2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIHRoZSBgYnJjbWZfcGNpZV9kZXZpZF90YWJsZWAqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhpcyBgYnJjbWZfcGNpZV9kZXZpZF90YWJsZWDigKYgaW1tZWRpYXRlbHksIG15IG1pbmQgc3RhcnRzIHRvIGNodXJuIG9uIHdoYXQgdGhpcyBsaWtlbHkgcmVwcmVzZW50cy4gQmFzZWQgb24gdGhlIG5hbWUsIGl0J3MgcHJldHR5IGNsZWFyOiBpdCdzIGEgdGFibGUsIHdoaWNoIG1lYW5zIGEgc3RydWN0dXJlZCBkYXRhIHNldC4gVGhlIGBicmNtZmAgcGFydCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyByZWxhdGVkIHRvIEJyb2FkY29tIFdpLUZpIGRyaXZlcnMsIGFuZCBgcGNpZWAgb2YgY291cnNlLCBpbmRpY2F0ZXMgaXQgY29uY2VybnMgdGhlIFBDSSBFeHByZXNzIGludGVyZmFjZS4gVGhlIGBkZXZpZGAgc3VnZ2VzdHMgaXQncyBsaWtlbHkgYSBsaXN0IG9mIGRldmljZSBJRHMuXG5cbk15IGluaXRpYWwgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMgdGFibGUgaXMgdGhlIGNvcmUgb2YgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyBhbmQgc3VwcG9ydHMgZGlmZmVyZW50IEJyb2FkY29tIFBDSWUgV2ktRmkgZGV2aWNlcy4gSXQncyBwcm9iYWJseSB0aGUgY3J1Y2lhbCBsb29rdXAgbWVjaGFuaXNtLiBXaXRob3V0IGl0LCB0aGUgZHJpdmVyIHdvdWxkbid0IGtub3cgaG93IHRvIGludGVyZmFjZSB3aXRoIHNwZWNpZmljIGhhcmR3YXJlLiBJJ20gaW1hZ2luaW5nIHJvd3Mgb3IgZW50cmllcywgZWFjaCB0aWVkIHRvIGEgcGFydGljdWxhciBkZXZpY2UsIHBlcmhhcHMgd2l0aCB2ZW5kb3IgYW5kIGRldmljZSBJRHMgYXMgdGhlIGtleXMuXG5cbkknbSBzdGFydGluZyB0byB0aGluayBhYm91dCB3aGF0IG90aGVyIGZpZWxkcyBtaWdodCBiZSBpbiBlYWNoIGVudHJ5LiBCZXlvbmQgdGhlIGRldmljZSBJRCwgdGhlcmUncyBsaWtlbHkgdG8gYmUgaW5mb3JtYXRpb24gdG8gZGVzY3JpYmUgdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcywgc3BlY2lmaWMgZHJpdmVyIGxvYWRpbmcgaW5zdHJ1Y3Rpb25zLCBvciBtYXliZSBldmVuIGZpcm13YXJlIGluZm9ybWF0aW9uLiBDb3VsZCBpdCBkaWN0YXRlIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBwb3dlciBtYW5hZ2VtZW50IHN0cmF0ZWdpZXMsIG9yIGV2ZW4gd2hpY2ggZmlybXdhcmUgZmlsZSB0byBsb2FkIGZvciBhIGdpdmVuIGRldmljZT8gRGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUsIHRoZXJlIG1pZ2h0IGV2ZW4gYmUgcG9pbnRlciB0byBkYXRhIHN0cnVjdHMgb3IgZnVuY3Rpb24gcG9pbnRlcnMgc3BlY2lmaWMgdG8gZWFjaCBkZXZpY2UuIEl0J3MgZXNzZW50aWFsbHkgdGhlIGJyaWRnZSBiZXR3ZWVuIHRoZSBnZW5lcmljIGRyaXZlciBhbmQgdGhlIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5JJ20gbm93IHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIHRhYmxlIHdvdWxkIGJlIG9yZ2FuaXplZCB3aXRoaW4gdGhlIGRyaXZlcidzIGNvZGU6IElzIGl0IGEgc3RhdGljIGFycmF5IGNvbXBpbGVkIGludG8gdGhlIGRyaXZlciwgb3IgaXMgaXQgbG9hZGVkIGR5bmFtaWNhbGx5PyBIb3cgaXMgaXQgYWNjZXNzZWQ/IElzIGl0IG9wdGltaXplZCBmb3IgZmFzdCBsb29rdXBzLCBwZXJoYXBzIHVzaW5nIGEgaGFzaCB0YWJsZSBvciBhIGJpbmFyeSBzZWFyY2ggaWYgdGhlIGRldmljZSBJRHMgYXJlIHNvcnRlZD8gQWxzbywgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgdGFibGUncyBzaXplPyBEb2VzIGl0IHNjYWxlIHdlbGwgdG8gbmV3IEJyb2FkY29tIGRldmljZXMsIG9yIGlzIGl0IHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIHJlZ3VsYXJseSB1cGRhdGVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxODYxNSwiT3V0cHV0VG9rZW5zIjo1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MjQuMzg0OTg0NjU4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDQwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNjgwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNjgwOlxcdFxcdFxcdGJyY21mX3BjaWVfZndjb25fdGltZXIoZGV2aW5mbywgdHJ1ZSk7XFxuMjY4MTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4yNjgyOlxcdFxcdH1cXG4yNjgzOlxcdFxcbjI2ODQ6XFx0Y2xlYW51cDpcXG4yNjg1OlxcdFxcdGJyY21mX2NoaXBfZGV0YWNoKGRldmluZm8tXFx1MDAzZWNpKTtcXG4yNjg2OlxcdFxcdGRldmluZm8tXFx1MDAzZWNpID0gTlVMTDtcXG4yNjg3OlxcdFxcdHBkZXYgPSBkZXZpbmZvLVxcdTAwM2VwZGV2O1xcbjI2ODg6XFx0XFx0YnJjbWZfcGNpZV9yZW1vdmUocGRldik7XFxuMjY4OTpcXHRcXG4yNjkwOlxcdFxcdGVyciA9IGJyY21mX3BjaWVfcHJvYmUocGRldiwgTlVMTCk7XFxuMjY5MTpcXHRcXHRpZiAoZXJyKVxcbjI2OTI6XFx0XFx0XFx0X19icmNtZl9lcnIoTlVMTCwgX19mdW5jX18sIFxcXCJwcm9iZSBhZnRlciByZXN1bWUgZmFpbGVkLCBlcnI9JWRcXFxcblxcXCIsIGVycik7XFxuMjY5MzpcXHRcXG4yNjk0OlxcdFxcdHJldHVybiBlcnI7XFxuMjY5NTpcXHR9XFxuMjY5NjpcXHRcXG4yNjk3OlxcdFxcbjI2OTg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtID0ge1xcbjI2OTk6XFx0XFx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxcbjI3MDA6XFx0XFx0LnJlc3VtZSA9IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMsXFxuMjcwMTpcXHRcXHQuZnJlZXplID0gYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyxcXG4yNzAyOlxcdFxcdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcXG4yNzAzOlxcdH07XFxuMjcwNDpcXHRcXG4yNzA1OlxcdFxcbjI3MDY6XFx0I2VuZGlmIC8qIENPTkZJR19QTSAqL1xcbjI3MDc6XFx0XFxuMjcwODpcXHRcXG4yNzA5OlxcdCNkZWZpbmUgQlJDTUZfUENJRV9ERVZJQ0UoZGV2X2lkLCBmd192ZW5kKSBcXFxcXFxuMjcxMDpcXHRcXHR7IFxcXFxcXG4yNzExOlxcdFxcdFxcdFBDSV9ERVZJQ0UoQlJDTV9QQ0lFX1ZFTkRPUl9JRF9CUk9BRENPTSwgKGRldl9pZCkpLCBcXFxcXFxuMjcxMjpcXHRcXHRcXHQuY2xhc3MgPSBQQ0lfQ0xBU1NfTkVUV09SS19PVEhFUiBcXHUwMDNjXFx1MDAzYyA4LCBcXFxcXFxuMjcxMzpcXHRcXHRcXHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxcXFxuMjcxNDpcXHRcXHRcXHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxcXFxuMjcxNTpcXHRcXHR9XFxuMjcxNjpcXHQjZGVmaW5lIEJSQ01GX1BDSUVfREVWSUNFX1NVQihkZXZfaWQsIHN1YnZlbmQsIHN1YmRldiwgZndfdmVuZCkgXFxcXFxcbjI3MTc6XFx0XFx0eyBcXFxcXFxuMjcxODpcXHRcXHRcXHRQQ0lfREVWSUNFX1NVQihCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAoZGV2X2lkKSwgXFxcXFxcbjI3MTk6XFx0XFx0XFx0XFx0ICAgICAgIChzdWJ2ZW5kKSwgKHN1YmRldikpLCBcXFxcXFxuMjcyMDpcXHRcXHRcXHQuY2xhc3MgPSBQQ0lfQ0xBU1NfTkVUV09SS19PVEhFUiBcXHUwMDNjXFx1MDAzYyA4LCBcXFxcXFxuMjcyMTpcXHRcXHRcXHQuY2xhc3NfbWFzayA9IDB4ZmZmZjAwLCBcXFxcXFxuMjcyMjpcXHRcXHRcXHQuZHJpdmVyX2RhdGEgPSBCUkNNRl9EUlZEQVRBXyAjIyBmd192ZW5kLCBcXFxcXFxuMjcyMzpcXHRcXHR9XFxuMjcyNDpcXHRcXG4yNzI1OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBicmNtZl9wY2llX2RldmlkX3RhYmxlW10gPSB7XFxuMjcyNjpcXHRcXHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1MF9ERVZJQ0VfSUQsIFdDQyksXFxuMjcyNzpcXHRcXHRCUkNNRl9QQ0lFX0RFVklDRV9TVUIoMHg0MzU1LCBCUkNNX1BDSUVfVkVORE9SX0lEX0JST0FEQ09NLCAweDQzNTUsIFdDQyksXFxuMjcyODpcXHRcXHRCUkNNRl9QQ0lFX0RFVklDRShCUkNNX1BDSUVfNDM1NF9SQVdfREVWSUNFX0lELCBXQ0MpLFxcbjI3Mjk6XFx0XFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTVfREVWSUNFX0lELCBXQ0NfU0VFRCksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjI0LjM4ODYzNTEwOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIxNTQzMzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBMaW51eCBkcml2ZXIgZGV2ZWxvcG1lbnQ6XG5cbioqRGVlcCBEaXZlOiBFeHBsb3JpbmcgdGhlIGJyY21mX3BjaWVfZGV2aWRfdGFibGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGBDWVdgIGlzIGFjdHVhbGx5IHJlZmVyZW5jZWQgYW55d2hlcmUgd2l0aGluIHRoZSBgYnJjbWZfcGNpZV9kZXZpZF90YWJsZWAuIFRoaXMgaXMgY3J1Y2lhbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IEJyb2FkY29tJ3MgV2lGaSBkcml2ZXIsIGBicmNtZl9wY2llYCwgaGFuZGxlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIFNwZWNpZmljYWxseSwgSSBzdXNwZWN0IGBDWVdgIHJlZmVycyB0byBhIHNwZWNpZmljIEJyb2FkY29tIGNoaXBzZXQgZmFtaWx5LCBhbmQgSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlIGRyaXZlciBrbm93cyBhYm91dCBpdC4gSSdtIHRoaW5raW5nIGFib3V0IGRyaXZlciBjb21wYXRpYmlsaXR5IGFuZCB0aGUgcG90ZW50aWFsIG5lZWQgZm9yIHNvbWUga2luZCBvZiBkZXZpY2Utc3BlY2lmaWMgaGFuZGxpbmcuIEVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIGhhcmR3YXJlJ3MgY2FwYWJpbGl0aWVzIGFuZCB0aGUgc29mdHdhcmUncyBhd2FyZW5lc3MuIElzIHRoZSBkZXZpY2UgSUQgbWFwcGluZyBjb3JyZWN0PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBvbWlzc2lvbnMgSSBuZWVkIHRvIGFkZHJlc3M/IERpZ2dpbmcgaW50byB0aGlzIHRhYmxlIGZlZWxzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGUgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDA2MywiT3V0cHV0VG9rZW5zIjo1NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MjguNzEwMTgyODk0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzAwNjU4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfUENJRV9ERVZJQ0UuKkNZV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjcyNT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgYnJjbWZfcGNpZV9kZXZpZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzQ4LVxcdEJSQ01GX1BDSUVfREVWSUNFKEJSQ01fUENJRV80MzcxX0RFVklDRV9JRCwgV0NDKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3NDk6XFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNTk2X0RFVklDRV9JRCwgQ1lXKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI3NTAtXFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNzdfREVWSUNFX0lELCBXQ0NfU0VFRCksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI3NTMtXFx0QlJDTUZfUENJRV9ERVZJQ0UoQlJDTV9QQ0lFXzQzNzUyX0RFVklDRV9JRCwgV0NDX1NFRUQpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6Mjc1NDpcXHRCUkNNRl9QQ0lFX0RFVklDRShDWV9QQ0lFXzU0NTkxX0RFVklDRV9JRCwgQ1lXKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI3NTUtXFx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NToyOS4zNDAyNjA5MzVaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODExMjE4NjY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQQ0llLCBGdXp6aW5nLCBhbmQgdGhlIGBicmNtZm1hY2AgRHJpdmVyOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIGBDWVdgIGlzIHRpZWQgdG8gUENJZSBkZXZpY2VzLCBpbnRlcmVzdGluZy4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IGZ1enogUENJZSBkZXZpY2VzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgKmdlbmVyaWMqIFBDSWUgZnV6emVyIG91dCBvZiB0aGUgYm94LiBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgaXQgbWlnaHQgZnV6eiBQQ0kgZGV2aWNlcyB2aWEgYHZmaW9gIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBidXQgdGhhdCdzIG5vdCBxdWl0ZSByaWdodC4gU3l6a2FsbGVyIGRvZXNuJ3QgbmF0aXZlbHkgZnV6eiBQQ0kgZGV2aWNlcyB1bmxlc3MgdGhlcmUgaXMgYSBkZWRpY2F0ZWQgZnV6emVyLCBsaWtlIHdpdGggcHNldWRvLXN5c2NhbGxzIHN1Y2ggYXMgYHN5el9wY2lfLi4uYC4gV2FpdCBhIG1pbnV0ZSwgZG9lc24ndCBTeXprYWxsZXIgaGF2ZSBgc3l6X3BjaV8uLi5gPyBObywgdGhhdCdzIG5vdCByaWdodC4gSXQgZG9lcyB0aGluZ3MgbGlrZSBVU0Igd2l0aCBgZHVtbXlfaGNkYCBhbmQgYmx1ZXRvb3RoIHdpdGggYHZoY2lgLCBidXQgbm90aGluZyBnZW5lcmljIGZvciBQQ0kgZGlyZWN0bHksIGl0IGRvZXNuJ3QgYXBwZWFyLlxuXG5BaCwgYnV0IHdhaXQsIHRoZXJlIGlzIGBzeXpfa3ZtX3NldHVwX2NwdWAgd2hpY2ggbWlnaHQgb3BlbiBhIGRvb3IgZm9yIHNvbWUgUENJIGZ1enppbmcgdGhyb3VnaCBRRU1VLiBIb3dldmVyLCBQQ0kgZHJpdmVycyBhcmUgdXN1YWxseSBoYXJkIHRvIGZ1enogdW5sZXNzIHZpcnR1YWxpemVkIChsaWtlIHZpcnRpbykgb3Igc3BlY2lmaWNhbGx5IHRhcmdldGVkIGJ5IGEgU3l6a2FsbGVyIFBDSSBmdXp6ZXIsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIFN5emthbGxlciBpcyBhIGJpdCBsaWdodCBoZXJlLiBXYWl0LCBJIHRob3VnaHQgdGhlcmUgd2VyZSBgc3l6X3BjaV8uLi5gc3lzY2FsbHM/IE5vLCBJJ20gdGhpbmtpbmcgb2Ygc29tZXRoaW5nIGVsc2UuXG5cbk9rYXksIGxldCdzIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgYG1hYzgwMjExX2h3c2ltYC4gVGhhdCdzIGEgc29mdHdhcmUgZW11bGF0b3IgZm9yIG1hYzgwMjExLCByaWdodD8gVGhlbiB3ZSdyZSBsb29raW5nIGF0IGBicmNtZm1hY2AsIHdoaWNoIGlzIGEgRnVsbE1BQyBkcml2ZXIsIHdoaWNoIHVzZXMgYGNmZzgwMjExYCwgbm90IGBtYWM4MDIxMWAuIEl0IGNvbW11bmljYXRlcyB3aXRoIHRoZSBmaXJtd2FyZSwgdGhhdCdzIGEga2V5IGRpc3RpbmN0aW9uLlxuXG5JZiBgYnJjbWZtYWNgIGl0c2VsZiBpc24ndCBmdXp6YWJsZSwgSSBuZWVkIHRvIGRlY2lkZSBpZiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAgaXMgdGhlIHJpZ2h0IG1vdmUuIEkgbmVlZCB0byBjb25zaWRlciwgXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cIiBUaGF0IGxpbmUgb2YgdGhpbmtpbmcgaXMgaW1wb3J0YW50LlxuXG5Ob3csIGBicmNtZm1hY2AgZG9lcyBoYXZlIFVTQiBzdXBwb3J0LCBidXQgYENZV2AgaXMgc3BlY2lmaWNhbGx5IGZvciBTRElPIGFuZCBQQ0llLCBub3QgVVNCLiBXYWl0LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGF0IGBDWVdgIGlzbid0IHVzZWQgaW4gVVNCIGF0IGFsbC4gV2UgY2hlY2tlZCBlYXJsaWVyLCBidXQgaXQncyB3b3J0aCBhIHNlY29uZCBsb29rIGF0IGB1c2IuY2AgdG8gY29uZmlybSB0aGF0IGBCUkNNRl9GV1ZFTkRPUl9DWVdgIGRvZXNuJ3QgYXBwZWFyIHRoZXJlLiBKdXN0IHdhbnQgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MDIsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6MzcuNDUyNDUxMjE5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDg5NzMyNzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNZV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjM4LjEwMTQ0MDk1N1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTA0OTY5Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEJyb2FkY29tIFdpLUZpIEZpcm13YXJlIFBhdGhzIGluIFVTQiB2cy4gT3RoZXIgSW50ZXJmYWNlcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgQ1lXYCB0aGluZywgc3BlY2lmaWNhbGx5IGl0cyB1c2UgKG9yIGxhY2sgdGhlcmVvZikgaW4gYHVzYi5jYC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uIGlzIHRoYXQgaXQncyAqbm90KiB1c2VkIGluIHRoZSBVU0IgaW1wbGVtZW50YXRpb24uIEJ1dCBJIG5lZWQgdG8gYmUgdGhvcm91Z2guIFdoYXQgaWYgSSBtaXNzZWQgc29tZXRoaW5nPyBJIGJldHRlciBjaGVjayBpZiBgQlJDTUZfRldWRU5ET1JfQ1lXYCBhcHBlYXJzICphbnl3aGVyZSogaW4gYHVzYi5jYC4gT2theSwgSSBqdXN0IGdyZXBwZWQgZm9yIGBCUkNNRl9GV1ZFTkRPUl9gIHdpdGhpbiBgdXNiLmNgIGFuZCBpdCdzIGxvb2tpbmcgbGlrZSBvbmx5IGBCUkNNRl9GV1ZFTkRPUl9XQ0NgIGlzIHByZXNlbnQuIFRoYXQgY29uZmlybXMgaXQsIHRoZSBVU0IgZGV2aWNlcyBhcmUgaW5kZWVkIHVzaW5nIHRoZSBgV0NDYCBwYXRoLCBub3QgdGhlIGBDWVdgIHBhdGguXG5cblRoaXMgbWVhbnMgdGhlIGBDWVdgIHZlbmRvciBmaXJtd2FyZSBpcyB1c2VkIGJ5IFNESU8gYW5kIFBDSWUgZGV2aWNlcy4gR2l2ZW4gdGhhdCBJIGNhbid0IHRoaW5rIG9mIGFueSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGZ1enogU0RJTyBvciBQQ0llIGludGVyZmFjZXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCDigJMgdW5sZXNzLCBvZiBjb3Vyc2UsIGEgdmVyeSBzcGVjaWZpYyBCcm9hZGNvbSBTRElPL1BDSWUgV2ktRmkgZW11bGF0b3IgZXhpc3RzLCB3aGljaCBhcyBmYXIgYXMgSSBrbm93LCBpdCBkb2Vzbid0IOKAkyBJJ20gdGhpbmtpbmcgdGhlc2UgY29kZSBwYXRocyBhcmUgYmFzaWNhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC5cblxuTm93LCB3YWl0IGEgc2VjLiBDYW4gUUVNVSBkbyBCcm9hZGNvbSBQQ0llIFdpLUZpIGVtdWxhdGlvbj8gTm9wZS4gV2hhdCBhYm91dCBCcm9hZGNvbSBTRElPIFdpLUZpPyBBbHNvIG5vLiBTbywgaW4gZWZmZWN0LCBmdW5jdGlvbnMgbGlrZSBgYnJjbWZfY3l3X21nbXRfdHhgIGFuZCBgYnJjbWZfY3l3X2V4dGVybmFsX2F1dGhgIHdvdWxkIGJlIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIGlmIEknbSBydW5uaW5nIHRoaXMgdGhpbmcgaW5zaWRlIGEgdmlydHVhbCBtYWNoaW5lLiBUaGlzIGlzIGdvb2QgdG8ga25vdy4gQnV0LCBiZWZvcmUgSSBtYWtlIHRoaXMgYSBzb2xpZCBjb25jbHVzaW9uLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrLiBJJ2xsIHRha2UgYSBsb29rIGF0IHdoZXJlIGBicmNtZl9jeXdfb3BzYCBpcyB1c2VkIGVsc2V3aGVyZSB0byBtYWtlIHN1cmUgaXQncyBub3QgcmVhY2hlZCB2aWEgc29tZSAqb3RoZXIqIHVuZXhwZWN0ZWQgbWVhbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODg0LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ1OjQ0LjIwNjQxNTA0NloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5OTE1ODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX2N5d19vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYz0zNTg9c3RhdGljIHZvaWQgYnJjbWZfY3l3X3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmM6MzcwOmNvbnN0IHN0cnVjdCBicmNtZl9md3ZpZF9vcHMgYnJjbWZfY3l3X29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYy0zNzEtXFx0LnNldF9zYWVfcGFzc3dvcmQgPSBicmNtZl9jeXdfc2V0X3NhZV9wd2QsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jPTEyPXN0YXRpYyBpbnQgX19pbml0IGJyY21mX2N5d19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE0LVxcdHJldHVybiBicmNtZl9md3ZpZF9yZWdpc3Rlcl92ZW5kb3IoQlJDTUZfRldWRU5ET1JfQ1lXLCBUSElTX01PRFVMRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jOjE1OlxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZicmNtZl9jeXdfb3BzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jLTE2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oLTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy92b3BzLmg6ODpleHRlcm4gY29uc3Qgc3RydWN0IGJyY21mX2Z3dmlkX29wcyBicmNtZl9jeXdfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvdm9wcy5oOjk6I2RlZmluZSBDWVdfVk9QU1xcdChcXHUwMDI2YnJjbWZfY3l3X29wcylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L3ZvcHMuaC0xMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6NDQuNDU2MzM5NDIzWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDg5NjAxNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gQnJvYWRjb20gV2ktRmkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBgQlJDTUZfRldWRU5ET1JfQ1lXYC4gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQncyBzcGVjaWZpYyB0byBCcm9hZGNvbSdzIFdpLUZpIGNoaXBzLCBsaWtlbHkgdGhvc2UgY29ubmVjdGVkIHZpYSBTRElPIG9yIFBDSWUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvZGUgcGF0aCBpcyBldmVuIHJlYWNoZWQuIEkgcXVpY2tseSBjb25maXJtIHRoYXQgYEJSQ01GX0ZXVkVORE9SX0NZV2AgaXMgb25seSB1c2VkIGluIGBiY21zZGguY2AgKFNESU8pIGFuZCBgcGNpZS5jYCAoUENJZSkgZmlsZXMuXG5cbk5vdywgbXkgbWluZCBzdGFydHMgcmFjaW5nLiBJcyB0aGVyZSBhbnkgd2F5IHRvIGVtdWxhdGUgb3IgdmlydHVhbGl6ZSBhbiBTRElPIG9yIFBDSWUgQnJvYWRjb20gZGV2aWNlPyBJIGNhbid0IHRoaW5rIG9mIGFueSBjb21tb24gc2V0dXAgbGlrZSB0aGF0LiBUeXBpY2FsbHksIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB5b3UncmUgbm90IGdvaW5nIHRvIGJlIGVtdWxhdGluZyB0aGVzZSBzcGVjaWZpYyBCcm9hZGNvbSBkZXZpY2VzIHdpdGhvdXQgaGFyZHdhcmUgcGFzc3Rocm91Z2gsIHJpZ2h0P1xuXG5BbHJpZ2h0LCBsZXQncyBleHBsb3JlIG90aGVyIGF2ZW51ZXMuIENvdWxkIGBtYWM4MDIxMV9od3NpbWAgYmUgaW52b2x2ZWQgc29tZWhvdz8gTm8sIHdhaXQsIHRoYXQncyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgZHJpdmVyLCBgbWFjODAyMTFfaHdzaW0uY2AsIGFuZCBpdCBkb2Vzbid0IHVzZSBgYnJjbWZtYWNgLiAgV2hhdCBhYm91dCBgY2ZnODAyMTFgPyBBaCwgdGhhdCdzIHRoZSBnZW5lcmljIHN1YnN5c3RlbS4gQnV0IGV2ZW4gdGhhdCBvbmx5IGludGVyYWN0cyB3aXRoIGBicmNtZm1hY2AgaWYgdGhlIGRyaXZlciBpcyBsb2FkZWQgKmFuZCogYSBkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IHByb2JlZC4gQW5kIHNpbmNlIHdlIGNhbid0IHByb2JlIGEgQnJvYWRjb20gU0RJTyBvciBQQ0llIGRldmljZSBpbiBRRU1VL0dDRSwgdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgc3VjY2VlZC4gVGhlIGRldmljZSB3aWxsIG5ldmVyIHJlZ2lzdGVyIHdpdGggYGNmZzgwMjExYC4gU28sIGl0IHNlZW1zIGxpa2UgYGJyY21mX2N5d19tZ210X3R4YCBhbmQgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCAqYXJlKiB1bnJlYWNoYWJsZSB1bmRlciB0eXBpY2FsIGNpcmN1bXN0YW5jZXMuXG5cbk9rYXksIGxldCBtZSBwaXZvdC4gSSB3b25kZXIgaWYgc3l6a2FsbGVyIGNvdWxkIGJlIHVzZWQgaGVyZT8gSSBoYXZlIHRvIHJlbWVtYmVyIGlmIEkgc2F3IGFueSBQQ0kgZnV6emluZyBpbiBzeXprYWxsZXIuIEkga25vdyBzb21lIGZvcmtzIG1pZ2h0IGhhdmUgYHN5el9wY2lfLi4uYCBwc2V1ZG8tc3lzY2FsbHMuIEJ1dCB0aGUgdXBzdHJlYW0gdmVyc2lvbiBkb2VzbuKAmXQgaGF2ZSBhIGdlbmVyYWwgUENJIGZ1enplciB0aGF0IGNhbiBmdWxseSBlbXVsYXRlIFBDSSBkZXZpY2VzLCBkb2VzIGl0PyBXYWl0LCBoYXMgdGhlcmUgYmVlbiBhbnkgcmVjZW50IGRldmVsb3BtZW50IG9uIFBDSSBmdXp6aW5nIHdpdGggYHZmaW9gIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBJIHNob3VsZCBjaGVjayBpZiB0aGVyZeKAmXMgYSBgQ09ORklHX1BDSWAgb3Igc2ltaWxhciBjb25maWd1cmF0aW9uIGludm9sdmVkLi4uXG5cbkV2ZW4gaWYgdGhlcmUgaXMgUENJIGZ1enppbmcsIGRvZXMgaXQgZW11bGF0ZSAqQnJvYWRjb20qIFdpLUZpPyBQcm9iYWJseSBub3QuIFVzdWFsbHksIFBDSSBmdXp6aW5nIGluamVjdHMgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTyByZWFkcy93cml0ZXMsIGJ1dCB0aGlzIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgYm91bmQgdG8gYSB2aXJ0dWFsIGRldmljZS4gSSBkb27igJl0IHRoaW5rIHRoZXJlIGlzIGEgZ2VuZXJpYyBQQ0kgZGV2aWNlIGVtdWxhdG9yIHdpdGhpbiBzeXprYWxsZXIuXG5cbkxldCdzIHNlZeKApnN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAgZm9yIFVTQi4uLiBidXQgZm9yIFBDSSwgZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgc2ltaWxhcj8gTGlrZSwgYHN5el9wY2lfZGV2aWNlX2FkZGA/IE5vLCBubyBzdWNoIGx1Y2suIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBnZW5lcmljIFBDSSBkZXZpY2UgZW11bGF0b3IuIFdoYXQgYWJvdXQgYHZoY2lgPyBUaGF04oCZcyBmb3IgQmx1ZXRvb3RoLCBub3QgcmVsZXZhbnQgaGVyZS4gQW5kIGBtYWM4MDIxMV9od3NpbWAgaXMgZm9yIFdpLUZpLCBidXQgZG9lc24ndCBpbnRlcmFjdCB3aXRoIHRoZSBzYW1lIGRyaXZlci4gU28sIGBicmNtZm1hY2AgaXMgZ2VuZXJhbGx5IG5vdCBmdXp6YWJsZSB1bmxlc3MgaXTigJlzIFVTQi4gQW5kLCBzaW5jZSB0aGlzIGNvZGUgc3BlY2lmaWNhbGx5IGNvbmNlcm5zIGBDWVdgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIFNESU8gYW5kIFBDSWUgb25seSwgaXTigJlzICpkZWZpbml0ZWx5KiBub3QgZnV6emFibGUuXG5cbk9rYXksIGJhY2sgdG8gdGhlIHBhdGNoLiBJIG5lZWQgdG8gcmV2aWV3IHRoaXMgY29kZSBhZ2Fpbi4gICpTY2FucyB0aGUgY29kZSogIEhtbSwgaXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBidXQgaXQncyBpbiBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgYSBidXMgdHlwZSAoU0RJTy9QQ0llKSB0aGF0IGlzIG5vdCBnZW5lcmFsbHkgZW11bGF0ZWQuXG5cbk9uZSBsYXN0IGNoZWNrLCBJJ20ganVzdCBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgaW5pdGlhbCBhc3N1bXB0aW9uOiBpcyBgQlJDTUZfRldWRU5ET1JfQ1lXYCAqcmVhbGx5KiBvbmx5IHVzZWQgaW4gdGhvc2UgdHdvIGZpbGVzPyBKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMxNjUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDU6NTcuNTQ1OTQ2MTdaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzkxMTcwMDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZfRldWRU5ET1JfQ1lXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9MzQ9ZW51bSBicmNtZl9md3ZlbmRvciB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM1LVxcdEJSQ01GX0ZXVkVORE9SX1dDQyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzY6XFx0QlJDTUZfRldWRU5ET1JfQ1lXLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zNy1cXHRCUkNNRl9GV1ZFTkRPUl9CQ0EsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0xOTU2PXN0YXRpYyBzMzIgYnJjbWZfc2V0X3dwYV92ZXJzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk2OC1cXHR9IGVsc2UgaWYgKHNtZS1cXHUwMDNlY3J5cHRvLndwYV92ZXJzaW9ucyBcXHUwMDI2IE5MODAyMTFfV1BBX1ZFUlNJT05fMikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjE5Njk6XFx0XFx0aWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlZnd2aWQgPT0gQlJDTUZfRldWRU5ET1JfQ1lXIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMTk3MC1cXHRcXHQgICAgc21lLVxcdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA9PSBXTEFOX0FLTV9TVUlURV9TQUUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jPTEyPXN0YXRpYyBpbnQgX19pbml0IGJyY21mX2N5d19pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xMy17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYzoxNDpcXHRyZXR1cm4gYnJjbWZfZnd2aWRfcmVnaXN0ZXJfdmVuZG9yKEJSQ01GX0ZXVkVORE9SX0NZVywgVEhJU19NT0RVTEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0xNS1cXHRcXHRcXHRcXHRcXHQgICBcXHUwMDI2YnJjbWZfY3l3X29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L21vZHVsZS5jPTE4PXN0YXRpYyB2b2lkIF9fZXhpdCBicmNtZl9jeXdfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmMtMTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvbW9kdWxlLmM6MjA6XFx0YnJjbWZfZnd2aWRfdW5yZWdpc3Rlcl92ZW5kb3IoQlJDTUZfRldWRU5ET1JfQ1lXLCBUSElTX01PRFVMRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9tb2R1bGUuYy0yMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI0MTY9c3RhdGljIGNvbnN0IHN0cnVjdCBicmNtZl9wY2llX2RydmRhdGEgZHJ2ZGF0YVtdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjQxNy1cXHRbQlJDTUZfRFJWREFUQV9DWVddID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjQxODpcXHRcXHQudmVuZG9yID0gQlJDTUZfRldWRU5ET1JfQ1lXLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjQxOS1cXHRcXHQuZndfc2VlZCA9IGZhbHNlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDM5PWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUzNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1MzY6XFx0Y2FzZSBCUkNNRl9GV1ZFTkRPUl9DWVc6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTM3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ2OjAzLjI4NTA3MTQ0MloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTU1MTgwODM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmc9RmFsc2U6IFVucmVhY2hhYmxlIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgbW9kaWZpZWQgc2VjdGlvbiBpcyBvbmx5IHVzZWQgaW4gYHBjaWUuY2AgYW5kIGBiY21zZGguY2AsIGFuZCBsaWtlbHkgb25seSB0aHJvdWdoIG1hY3JvIGV4cGFuc2lvbi4gTXkgZmlyc3QgdGhvdWdodCB3YXMsIFwiQ291bGQgd2UgcG9zc2libHkgdHJpZ2dlciB0aGlzIHNvbWVob3cgdGhyb3VnaCBgY2ZnODAyMTFgIHdpdGhvdXQgdGhlIGRldmljZSBmdWxseSBwcm9iZWQ/XCIgQnV0IG5vLCB0aGF0IHdvbid0IHdvcmsuIGBjZmc4MDIxMWAgbmVlZHMgYSByZWdpc3RlcmVkIGB3aXBoeWAgZGV2aWNlLCB3aGljaCB0aGUgZHJpdmVyIGNyZWF0ZXMgZHVyaW5nIHByb2JlLiBJZiB0aGUgcHJvYmUgZmFpbHMgYmVjYXVzZSB0aGVyZSdzIG5vIGhhcmR3YXJlLCB0aGUgYHdpcGh5YCBpc24ndCByZWdpc3RlcmVkLCBhbmQgYGNmZzgwMjExYCB3b24ndCBrbm93IGFueXRoaW5nIGFib3V0IGl0LlxuXG5MZXQncyB0aGluayBpZiB0aGVyZSdzIGFueSBvdGhlciBhdmVudWUuIElzIHRoZXJlIGEgZHVtbXkgZHJpdmVyIGZvciBicmNtZm1hYz8gTm9wZS4gQ2FuIHdlIGluamVjdCBTRElPIGRldmljZXMgaW4gc3l6a2FsbGVyPyBOby4gUENJZT8gU3RpbGwgbm8uIFNvLCBpdCBzZWVtcyBsaWtlIHRoaXMgY29kZSBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXG5cbkdpdmVuIHRoaXMsIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIE15IHJlYXNvbmluZyBpcyB0aGlzIGNvZGUgbW9kaWZpZXMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgQnJvYWRjb20gYnJjbWZtYWMsIGRlYWxpbmcgd2l0aCBTRElPIGFuZCBQQ0llIGJ1c2VzLiBUaGVzZSBidXMgdHlwZXMgY2Fubm90IGJlIGVtdWxhdGVkIG9yIGFjY2Vzc2VkIHdpdGhpbiB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgcHJvbXB0J3Mgd29yZGluZzogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlwiIFllcCwgdGhhdCdzIGEgcGVyZmVjdCBmaXQuIFRoZSBzcGVjaWZpYyBjb2RlIGlzIHdpdGhpbiBgYnJjbWZtYWMvY3l3L2NvcmUuY2AsIHdoaWNoIHJlbGF0ZXMgdG8gdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yIGZpcm13YXJlIHZhcmlhbnQgb2YgdGhlIEJyb2FkY29tIEZ1bGxNQUMgZHJpdmVyLiBUaGlzIENZVyB2YXJpYW50IGlzIHRpZWQgdG8gY2VydGFpbiBTRElPIGFuZCBQQ0llIGRldmljZSBJRHMuIFdlIGNhbid0IGVtdWxhdGUgdGhvc2UgYnVzZXMgd2l0aGluIHN0YW5kYXJkIHN5emthbGxlciBlbnZpcm9ubWVudHMuIFVubGlrZSBVU0IsIHdoZXJlIHdlIGNvdWxkIHVzZSBgZHVtbXlfaGNkYCBmb3IgZW11bGF0aW9uLlxuXG5KdXN0IHRvIGJlIDEwMCUgc3VyZSwgbGV0IG1lIHZlcmlmeSBhZ2FpbiBpZiB0aGUgYENZV2AgdmFyaWFudCBpcyBib3VuZCB0byBhbnkgVVNCIGRldmljZSBJRHMuIEkgY2hlY2tlZCBgdXNiLmNgIGFuZCB0aGUgY29kZSBvbmx5IHVzZXMgYEJSQ01GX0ZXVkVORE9SX1dDQ2AuIFdhaXQsIGxldCBtZSBjaGVjayB0aGUgYGJyY21mX3VzYl9kZXZpZF90YWJsZWAgb25lIG1vcmUgdGltZSwganVzdCBpbiBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjAyOCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NjoyNC44MzY4ODMwNzJaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NTM1NjM5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDWVBSRVNTX1VTQl9ERVZJQ0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTExPXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTQzOiNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTQ0LVxcdHsgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTE1NDk9c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NTQtXFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTU1NTpcXHRDWVBSRVNTX1VTQl9ERVZJQ0UoQ1lfVVNCXzQzNzNfREVWSUNFX0lEKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU1Ni1cXHR7IFVTQl9ERVZJQ0UoQlJDTV9VU0JfVkVORE9SX0lEX0xHLCBCUkNNX1VTQl80MzI0Ml9MR19ERVZJQ0VfSUQpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU1OC1cXHRCUkNNRl9VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NTk6XFx0Q1lQUkVTU19VU0JfREVWSUNFKEJSQ01fVVNCX0JDTUZXX0RFVklDRV9JRCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NjAtXFx0eyAvKiBlbmQ6IGFsbCB6ZXJvZXMgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0NjoyNS41MzIyNTUyODNaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEwODI5MzI5NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQSBRdWljayBEb3VibGUtVGFrZSBvbiB0aGUgQ3lwcmVzcyBEZXZpY2UgSUQqKlxuXG5Ib2xkIG9uIGEgc2Vjb25kISBJIG5lZWQgdG8gcHJvY2VzcyB0aGlzLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IGJlY2F1c2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgQ3lwcmVzcyBkZXZpY2UsIHRoZSBgQlJDTUZfRldWRU5ET1JfQ1lXYCBmaXJtd2FyZSB2ZW5kb3IgSUQgd291bGQgYmUgdXNlZC4gQnV0IHRoaXMgYENZUFJFU1NfVVNCX0RFVklDRWAgbWFjcm8uLi4gaXQncyBkZWZpbmVkIGFzOlxuXG5gYGBjXG4jZGVmaW5lIENZUFJFU1NfVVNCX0RFVklDRShkZXZfaWQpIFxcXG5cdHsgXFxcblx0XHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcblx0XHQuZHJpdmVyX2luZm8gPSBCUkNNRl9GV1ZFTkRPUl9XQ0MgXFxcblx0fVxuYGBgXG5cbi4uLmFuZCBpdCdzIGV4cGxpY2l0bHkgYXNzaWduaW5nIGBCUkNNRl9GV1ZFTkRPUl9XQ0NgISBUaGF0IGNvbXBsZXRlbHkgY29udHJhZGljdHMgbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBJIGNhbiBzZWUgd2h5IHRoaXMgY291bGQgYmUgY29uZnVzaW5nLiBUaW1lIHRvIHZlcmlmeSB0aGlzIGFuZCBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdmVuZG9yIGFzc2lnbm1lbnRzIGlzIGNvcnJlY3QgaW4gdGhpcyBjb250ZXh0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgc29tZXRoaW5nIGNydWNpYWwuIExldCBtZSBnbyBiYWNrIGFuZCByZS1ldmFsdWF0ZSB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzY1OSwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwODo0Njo0Ni42MTUxOTIwNjNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTQwLFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTQwOlxcdFxcdFxcdC5kcml2ZXJfaW5mbyA9IEJSQ01GX0ZXVkVORE9SX1dDQyBcXFxcXFxuMTU0MTpcXHRcXHR9XFxuMTU0MjpcXHRcXG4xNTQzOlxcdCNkZWZpbmUgQ1lQUkVTU19VU0JfREVWSUNFKGRldl9pZCkgXFxcXFxcbjE1NDQ6XFx0XFx0eyBcXFxcXFxuMTU0NTpcXHRcXHRcXHRVU0JfREVWSUNFKENZX1VTQl9WRU5ET1JfSURfQ1lQUkVTUywgZGV2X2lkKSwgXFxcXFxcbjE1NDY6XFx0XFx0XFx0LmRyaXZlcl9pbmZvID0gQlJDTUZfRldWRU5ET1JfV0NDIFxcXFxcXG4xNTQ3OlxcdFxcdH1cXG4xNTQ4OlxcdFxcbjE1NDk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGJyY21mX3VzYl9kZXZpZF90YWJsZVtdID0ge1xcbjE1NTA6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzE0M19ERVZJQ0VfSUQpLFxcbjE1NTE6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzIzNl9ERVZJQ0VfSUQpLFxcbjE1NTI6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzI0Ml9ERVZJQ0VfSUQpLFxcbjE1NTM6XFx0XFx0QlJDTUZfVVNCX0RFVklDRShCUkNNX1VTQl80MzU2OV9ERVZJQ0VfSUQpLFxcbjE1NTQ6XFx0XFx0TElOS1NZU19VU0JfREVWSUNFKEJSQ01fVVNCXzQzMjM1X0xJTktTWVNfREVWSUNFX0lEKSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDg6NDY6NDYuNjE1NDY2NjczWiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MzY2NDI2OTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgQ1lXIENvZGUgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBqdXN0IGNvbmZpcm1lZCBzb21ldGhpbmcgaW1wb3J0YW50IHJlZ2FyZGluZyB0aGUgQnJvYWRjb20gZmlybXdhcmUgdmVuZG9yIElEcy4gVGhlIGBDWVBSRVNTX1VTQl9ERVZJQ0VgIGZsYWcgaXMgZGVmaW5pdGVseSBzZXR0aW5nIHRoZSBgLmRyaXZlcl9pbmZvYCB0byBgQlJDTUZfRldWRU5ET1JfV0NDYCwgcmlnaHQ/IFRoYXQncyB3aGF0IEkgbmVlZGVkIHRvIHZlcmlmeS4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGBCUkNNRl9GV1ZFTkRPUl9DWVdgIHZhbHVlICpzcGVjaWZpY2FsbHkqIGlzbid0IHVzZWQgZm9yIFVTQiBkZXZpY2VzOyBpdCdzIGV4Y2x1c2l2ZWx5IGZvciBTRElPIGFuZCBQQ0llIGludGVyZmFjZXMuXG5cbkNvbnNlcXVlbnRseSwgYW55IGNvZGUgcGF0aCBzcGVjaWZpY2FsbHkgdGllZCB0byB0aGUgYENZV2AgdmVuZG9yIElELCBsaWtlIGBicmNtZl9jeXdfbWdtdF90eGAgb3IgYGJyY21mX2N5d19leHRlcm5hbF9hdXRoYCwgaXMgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpZiB0aGUgZGV2aWNlIGlzIG9wZXJhdGluZyBpbiBVU0IgZW11bGF0aW9uIG1vZGUuIFRoaXMgaXMgY3J1Y2lhbC4gU2luY2Ugb3VyIHZpcnR1YWxpemF0aW9uIHNldHVwIGRvZXNuJ3QgZW11bGF0ZSBTRElPIG9yIFBDSWUsIHRoaXMgYENZV2Atc3BlY2lmaWMgY29kZSBiZWNvbWVzIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSB3aXRoaW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCdzIHNpbXBseSBub3QgcG9zc2libGUgdG8gdHJpZ2dlciB0aGVzZSBmdW5jdGlvbnMgdW5kZXIgdGhlc2UgY29uZGl0aW9ucy5cblxuVGhlcmVmb3JlLCBnaXZlbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBgQ1lXYC1zcGVjaWZpYyBjb2RlIGlzIGluYWNjZXNzaWJsZSBnaXZlbiB0aGUgYXJjaGl0ZWN0dXJlIG9mIG91ciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBhbmQgdGhlIGRldmljZXMgd2UgYXJlIGVtdWxhdGluZy4gVGhlcmUncyBubyBwb2ludCBpbiBkZWRpY2F0aW5nIGZ1enppbmcgcmVzb3VyY2VzIHRvIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIHJlYWNoZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4Mzg1LCJPdXRwdXRUb2tlbnMiOjE0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA4OjQ3OjAwLjk4MTg5ODEzWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIG9wZXJhdGlvbnMgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgKGJyY21mbWFjKSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBCUkNNRl9GV1ZFTkRPUl9DWVcgdmFyaWFudCBpcyBvbmx5IGJvdW5kIHRvIHNwZWNpZmljIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gVVNCIGRldmljZXMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QsIGFyZSBleHBsaWNpdGx5IGJvdW5kIHRvIHRoZSBXQ0MgdmFyaWFudCBpbnN0ZWFkLiBTaW5jZSBTRElPIGFuZCBQQ0llIEJyb2FkY29tIFdpLUZpIGRldmljZXMgY2Fubm90IGJlIHNvZnR3YXJlLWVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEN5cHJlc3MgKENZVykgdmVuZG9yLXNwZWNpZmljIGZpcm13YXJlIG9wZXJhdGlvbnMgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgKGJyY21mbWFjKSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBCUkNNRl9GV1ZFTkRPUl9DWVcgdmFyaWFudCBpcyBvbmx5IGJvdW5kIHRvIHNwZWNpZmljIFNESU8gYW5kIFBDSWUgZGV2aWNlIElEcy4gVVNCIGRldmljZXMsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIHZpYSBkdW1teV9oY2QsIGFyZSBleHBsaWNpdGx5IGJvdW5kIHRvIHRoZSBXQ0MgdmFyaWFudCBpbnN0ZWFkLiBTaW5jZSBTRElPIGFuZCBQQ0llIEJyb2FkY29tIFdpLUZpIGRldmljZXMgY2Fubm90IGJlIHNvZnR3YXJlLWVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowszm7m[1] Phase: Running StartedAt: 2026-07-10 08:47:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszm7m[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-10 08:47:13 +0000 UTC FinishedAt: 2026-07-10 08:47:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}