Name: series-workflowsf8c7 Phase: Failed StartedAt: 2026-07-14 11:14:50 +0000 UTC FinishedAt: 2026-07-14 11:39:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsf8c7[0] Phase: Succeeded StartedAt: 2026-07-14 11:14:50 +0000 UTC FinishedAt: 2026-07-14 11:39:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsf8c7[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 11:14:50 +0000 UTC FinishedAt: 2026-07-14 11:39:11 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ3YTcwZWUwZDY5MWU5OTYyZTA3MzNkN2Y1OTdjZmQ0Zjk1YTVmMGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMTozNzo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmMgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcbmluZGV4IDZkMmJiYWU3NDc3YjM5Li42NzdlNzdlOTE3YjY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jXG5AQCAtNzQwLDkgJiM0Mzs3NDAsMTQgQEAgc3RhdGljIF9faW5pdCBpbnQgbWN0cF9pM2NfbW9kX2luaXQodm9pZClcbiBcbiBcdHJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xuIFx0aWYgKHJjIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0XHRnb3RvIGVycl91bnJlZ2lzdGVyX25vdGlmaWVyO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjpcbiYjNDM7XHRpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZtY3RwX2kzY19ub3RpZmllcik7XG4mIzQzO1x0bWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTtcbiYjNDM7XHRyZXR1cm4gcmM7XG4gfVxuIFxuIHN0YXRpYyBfX2V4aXQgdm9pZCBtY3RwX2kzY19tb2RfZXhpdCh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDdhNzBlZTBkNjkxZTk5NjJlMDczM2Q3ZjU5N2NmZDRmOTVhNWYwYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDExOjM3OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jCmluZGV4IDZkMmJiYWU3NDc3YjM5Li42NzdlNzdlOTE3YjY2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuYwpAQCAtNzQwLDkgJiM0Mzs3NDAsMTQgQEAgc3RhdGljIF9faW5pdCBpbnQgbWN0cF9pM2NfbW9kX2luaXQodm9pZCkKIAogCXJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcigmYW1wO21jdHBfaTNjX2RyaXZlcik7CiAJaWYgKHJjICZsdDsgMCkKLQkJcmV0dXJuIHJjOwomIzQzOwkJZ290byBlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjsKIAogCXJldHVybiAwOwomIzQzOwomIzQzO2Vycl91bnJlZ2lzdGVyX25vdGlmaWVyOgomIzQzOwlpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcigmYW1wO21jdHBfaTNjX25vdGlmaWVyKTsKJiM0MzsJbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTsKJiM0MzsJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgX19leGl0IHZvaWQgbWN0cF9pM2NfbW9kX2V4aXQodm9pZCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1DVFAtSTNDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYG1jdHBfaTNjX21vZF9pbml0KClgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGVyZSB3YXMgYW4gZXJyb3IgcGF0aCByZWxhdGVkIHRvIHRoZSBgaTNjX2RyaXZlcl9yZWdpc3RlcigpYCBmdW5jdGlvbi4gUHJldmlvdXNseSwgaWYgdGhhdCByZWdpc3RyYXRpb24gZmFpbGVkLCB0aGluZ3Mgd2VyZW4mIzM5O3QgY2xlYW5lZCB1cCBjb3JyZWN0bHksIHdoaWNoIGNvdWxkIGxlYWQgdG8gcmVzb3VyY2UgbGVha3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhhdC4gTm93LCBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcigpYCBmYWlscywgdGhlIG5vdGlmaWVyIGlzIHVucmVnaXN0ZXJlZCwgYW5kIGFsbCBidXNlcyBhcmUgcmVtb3ZlZCB0byBtYWludGFpbiBjb25zaXN0ZW5jeS4gTGV0IG1lIGRpdmUgaW50byB0aGF0IGBtY3RwX2kzY19tb2RfaW5pdGAgZnVuY3Rpb24gYW5kIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCB0aGlzLiBJJiMzOTtsbCBjaGVjayBob3cgdGhleSBlbnN1cmVkIHRoZSBpbnRlZ3JpdHkgb2YgcmVzb3VyY2VzIGlmIHJlZ2lzdHJhdGlvbiBmYWlsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcyNTpcdFx0LnJlbW92ZSA9IG1jdHBfaTNjX3JlbW92ZSxcbiA3MjY6XHRcdC5pZF90YWJsZSA9IG1jdHBfaTNjX2lkcyxcbiA3Mjc6XHR9O1xuIDcyODpcdFxuIDcyOTpcdHN0YXRpYyBfX2luaXQgaW50IG1jdHBfaTNjX21vZF9pbml0KHZvaWQpXG4gNzMwOlx0e1xuIDczMTpcdFx0aW50IHJjO1xuIDczMjpcdFxuIDczMzpcdFx0cmMgPSBpM2NfcmVnaXN0ZXJfbm90aWZpZXIoXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xuIDczNDpcdFx0aWYgKHJjIFx1MDAzYyAwKSB7XG4gNzM1Olx0XHRcdGkzY19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xuIDczNjpcdFx0XHRyZXR1cm4gcmM7XG4gNzM3Olx0XHR9XG4gNzM4Olx0XG4gNzM5Olx0XHRpM2NfZm9yX2VhY2hfYnVzX2xvY2tlZChtY3RwX2kzY19idXNfYWRkX25ldywgTlVMTCk7XG4gNzQwOlx0XG4gNzQxOlx0XHRyYyA9IGkzY19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bWN0cF9pM2NfZHJpdmVyKTtcbiA3NDI6XHRcdGlmIChyYyBcdTAwM2MgMClcbiA3NDM6XHRcdFx0Z290byBlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjtcbiA3NDQ6XHRcbiA3NDU6XHRcdHJldHVybiAwO1xuIDc0NjpcdFxuIDc0NzpcdGVycl91bnJlZ2lzdGVyX25vdGlmaWVyOlxuIDc0ODpcdFx0aTNjX3VucmVnaXN0ZXJfbm90aWZpZXIoXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xuIDc0OTpcdFx0bWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTtcbiA3NTA6XHRcdHJldHVybiByYztcbiA3NTE6XHR9XG4gNzUyOlx0XG4gNzUzOlx0c3RhdGljIF9fZXhpdCB2b2lkIG1jdHBfaTNjX21vZF9leGl0KHZvaWQpXG4gNzU0Olx0e1xuIDc1NTpcdFx0aW50IHJjO1xuIDc1NjpcdFxuIDc1NzpcdFx0aTNjX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNm1jdHBfaTNjX2RyaXZlcik7XG4gNzU4Olx0XG4gNzU5Olx0XHRyYyA9IGkzY191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNm1jdHBfaTNjX25vdGlmaWVyKTtcbiA3NjA6XHRcdGlmIChyYyBcdTAwM2MgMClcbiA3NjE6XHRcdFx0cHJfd2FybihcJiMzNDtNQ1RQIEkzQyBjb3VsZCBub3QgdW5yZWdpc3RlciBub3RpZmllciwgJWRcXG5cJiMzNDssIHJjKTtcbiA3NjI6XHRcbiA3NjM6XHRcdG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsKCk7XG4gNzY0Olx0fVxuIDc2NTpcdFxuIDc2NjpcdG1vZHVsZV9pbml0KG1jdHBfaTNjX21vZF9pbml0KTtcbiA3Njc6XHRtb2R1bGVfZXhpdChtY3RwX2kzY19tb2RfZXhpdCk7XG4gNzY4Olx0XG4gNzY5Olx0TU9EVUxFX0RFVklDRV9UQUJMRShpM2MsIG1jdHBfaTNjX2lkcyk7XG4gNzcwOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01DVFAgSTNDIGRldmljZVwmIzM0Oyk7XG4gNzcxOlx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiA3NzI6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O01hdHQgSm9obnN0b24gXHUwMDNjbWF0dEBjb2RlY29uc3RydWN0LmNvbS5hdVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDYzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFdvcnRoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBtY3RwX2kzY19tb2RfaW5pdGAsIHdoaWNoIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEl0JiMzOTtzIGFuIGVycm9yIHBhdGggZml4LCBiYXNpY2FsbHkgYWRkaW5nIGNsZWFudXAgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgbW9kdWxlIGluaXRpYWxpemF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxlYW4gdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTW9kdWxlIGluaXRpYWxpemF0aW9uIGVycm9yIHBhdGhzIGFyZSBnZW5lcmFsbHkgZGlmZmljdWx0IGZvciBzeXprYWxsZXIgdG8gaGl0IGRpcmVjdGx5IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIG1lY2hhbmlzbSB0byB0cmlnZ2VyIG1vZHVsZSBsb2FkaW5nIGFuZCBmYWlsdXJlLiBTeXprYWxsZXIgY2FuIGxvYWQvdW5sb2FkIG1vZHVsZXMsIG9yIHRyaWdnZXIgaW5pdCBlcnJvcnMgb24gYm9vdCBpZiB0aGUgZHJpdmVyJiMzOTtzIGJ1aWx0LWluLgoKSG93ZXZlciwgYG1jdHBfaTNjX21vZF9pbml0YCBydW5zIG9uIG1vZHVsZSBsb2FkIG9yIGJvb3QsIGFuZCBpZiBpdCBmYWlscywgaXQgY2xlYW5zIHVwLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtQcm9iYWJseSBub3Qgd29ydGggZnV6emluZy4mIzM0OyBJdCYjMzk7cyBhIGNsZWFudXAgcGF0aC4gQnV0IHRoZW4gSSByZW1lbWJlciBmYXVsdCBpbmplY3Rpb24hIElmIGZhdWx0IGluamVjdGlvbiBpcyBlbmFibGVkLCBhIGZhaWxlZCBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgY2FsbCAqY291bGQqIHRyaWdnZXIgdGhpcyBwYXRoLiBUaGUgcXVlc3Rpb24gcmVtYWluczogaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBNb2R1bGUgaW5pdCBmdW5jdGlvbnMgYXJlIHR5cGljYWxseSBydW4gb25seSBvbmNlLiBTeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBmdXp6IGBpbml0X21vZHVsZWAgaWYgaXQgaGFkIGFjY2VzcyB0byBtb2R1bGUgZmlsZXMsIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJiMzOTt0LgoKTm93LCB0aGUgcGF0Y2ggaXRzZWxmIGlzIGluY3JlZGlibHkgc2ltcGxlOiBpdCYjMzk7cyBqdXN0IGFkZGluZyBjbGVhbnVwIHRvIGFuIGVycm9yIHBhdGggaW4gYSBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gR2l2ZW4gdGhpcywgSSB3YXMgZ29pbmcgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBiZWNhdXNlIGVycm9yIHBhdGhzIGR1cmluZyBtb2R1bGUgaW5pdCBhcmUgaGFyZCB0byByZWFjaCwgYW5kIGl0IGRvZXNuJiMzOTt0IGV4cG9zZSBhbnkgbmV3IGF0dGFjayBzdXJmYWNlIG9yIGNvbXBsZXggbG9naWMuCgpCdXQsIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZ3VpZGVsaW5lcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZ3VpZGVsaW5lcyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoaW5ncyBsaWtlIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIG9yIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuIE9rYXksIG15IHBhdGNoIGlzbiYjMzk7dCB0aGF0LiBJdCBhbHNvIHNheXMgcmV0dXJuIGBmYWxzZWAgaWYgaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXMgKnRoaXMqIGltcG9zc2libGU/CgpXZWxsLCBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMsIGl0JiMzOTtzIGFuIGVycm9yIHBhdGgsIGFuZCBpdCAqY2FuKiBiZSByZWFjaGVkIHZpYSBmYXVsdCBpbmplY3Rpb24uIFNvLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBUaGUgZ3VpZGVsaW5lcyBtZW50aW9uIHRoYXQgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBzaG91bGQgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSBpZiB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE9rYXksIGl0JiMzOTtzIGEgZHJpdmVyIG1vZHVsZSBpbml0LCB3aGljaCBtZWFucyBkcml2ZXIgYW5kIGtlcm5lbCBsb2dpYy4KClNvLCBsZXQmIzM5O3MgY2hlY2sgaWYgTUNUUCBJM0MgaXMgcmVhY2hhYmxlLiBNQ1RQIG92ZXIgSTNDLiBJM0MgaXMgYSBoYXJkd2FyZSBidXMuIElzIHRoZXJlIGFuIEkzQyBzb2Z0d2FyZSBlbXVsYXRvcj8gSSBuZWVkIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIEkzQyBlbXVsYXRvciBvciBkdW1teSBkcml2ZXIgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcHJhY3RpY2FsbHkgcmVhY2hlZCB2aWEgc3l6a2FsbGVyLiBJZiB0aGVyZSBpcywgdGhlbiBgV29ydGhGdXp6aW5nPXRydWVgLiBJZiBub3QsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2kzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaTNjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI0NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9pM2MvS2NvbmZpZz0zPW1lbnVjb25maWcgSTNDXG4tLVxuZHJpdmVycy9pM2MvS2NvbmZpZy0xOS1cdCAgVGhpcyBJM0Mgc3VwcG9ydCBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlXG5kcml2ZXJzL2kzYy9LY29uZmlnOjIwOlx0ICB3aWxsIGJlIGNhbGxlZCBpM2MuXG5kcml2ZXJzL2kzYy9LY29uZmlnLTIxLVxuZHJpdmVycy9pM2MvS2NvbmZpZz0yMj1pZiBJM0NcbmRyaXZlcnMvaTNjL0tjb25maWc6MjM6c291cmNlIFwmIzM0O2RyaXZlcnMvaTNjL21hc3Rlci9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2kzYy9LY29uZmlnLTI0LWVuZGlmICMgSTNDXG4tLVxuZHJpdmVycy9pM2MvS2NvbmZpZz0yNj1jb25maWcgSTNDX09SX0kyQ1xuLS1cbmRyaXZlcnMvaTNjL0tjb25maWctMzAtXHRoZWxwXG5kcml2ZXJzL2kzYy9LY29uZmlnOjMxOlx0ICBEZXZpY2UgZHJpdmVycyB1c2luZyBtb2R1bGVfaTNjX2kyY19kcml2ZXIoKSBjYW4gdXNlIGVpdGhlclxuZHJpdmVycy9pM2MvS2NvbmZpZzozMjpcdCAgaTJjIG9yIGkzYyBob3N0cywgYnV0IGNhbm5vdCBiZSBidWlsdC1pbiBmb3IgdGhlIGtlcm5lbCB3aGVuXG5kcml2ZXJzL2kzYy9LY29uZmlnLTMzLVx0ICBDT05GSUdfSTNDPW0uXG4tLVxuZHJpdmVycy9pM2MvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2kzYy9NYWtlZmlsZToyOmkzYy15XHRcdFx0XHQ6PSBkZXZpY2UubyBtYXN0ZXIub1xuZHJpdmVycy9pM2MvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfSTNDKVx0XHQmIzQzOz0gaTNjLm9cbmRyaXZlcnMvaTNjL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0kzQylcdFx0JiM0Mzs9IG1hc3Rlci9cbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNy0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE4OiAqIGkzY19kZXZpY2VfZG9feGZlcnMoKSAtIGRvIEkzQyB0cmFuc2ZlcnMgZGlyZWN0ZWQgdG8gYSBzcGVjaWZpYyBkZXZpY2VcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE5LSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzUtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozNjppbnQgaTNjX2RldmljZV9kb194ZmVycyhzdHJ1Y3QgaTNjX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTNjX3hmZXIgKnhmZXJzLFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Mzc6XHRcdFx0aW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zOC17XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNDgtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo0OTpcdHJldCA9IGkzY19idXNfcnBtX2dldChkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTUwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy01Mi1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjUzOlx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjU0Olx0cmV0ID0gaTNjX2Rldl9kb194ZmVyc19sb2NrZWQoZGV2LVx1MDAzZWRlc2MsIHhmZXJzLCBueGZlcnMsIG1vZGUpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6NTU6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy01Ni1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjU3Olx0aTNjX2J1c19ycG1fcHV0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtNTgtXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNjAtfVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjE6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9kb194ZmVycyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy02Mi1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTYzLS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjQ6ICogaTNjX2RldmljZV9kb19zZXRkYXNhKCkgLSBkbyBJM0MgZHluYW1pYyBhZGRyZXNzIGFzc2lnbmVtZW50IHdpdGhcbmRyaXZlcnMvaTNjL2RldmljZS5jLTY1LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGFkZHJlc3Ncbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03MC0gKi9cbmRyaXZlcnMvaTNjL2RldmljZS5jOjcxOmludCBpM2NfZGV2aWNlX2RvX3NldGRhc2Eoc3RydWN0IGkzY19kZXZpY2UgKmRldilcbmRyaXZlcnMvaTNjL2RldmljZS5jLTcyLXtcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03NC1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjc1Olx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTc4LVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Nzk6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6ODA6XHRyZXQgPSBpM2NfZGV2X3NldGRhc2FfbG9ja2VkKGRldi1cdTAwM2VkZXNjKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjgxOlx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtODItXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo4MzpcdGkzY19idXNfcnBtX3B1dChkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg0LVxuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTg2LX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjg3OkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfZG9fc2V0ZGFzYSk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy04OC1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTg5LS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6OTA6ICogaTNjX2RldmljZV9nZXRfaW5mbygpIC0gZ2V0IEkzQyBkZXZpY2UgaW5mb3JtYXRpb25cbmRyaXZlcnMvaTNjL2RldmljZS5jLTkxLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtOTYtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo5Nzp2b2lkIGkzY19kZXZpY2VfZ2V0X2luZm8oY29uc3Qgc3RydWN0IGkzY19kZXZpY2UgKmRldixcbmRyaXZlcnMvaTNjL2RldmljZS5jOjk4Olx0XHRcdCBzdHJ1Y3QgaTNjX2RldmljZV9pbmZvICppbmZvKVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtOTkte1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwMi1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEwMzpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMDQtXHRpZiAoZGV2LVx1MDAzZWRlc2MpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMDUtXHRcdCppbmZvID0gZGV2LVx1MDAzZWRlc2MtXHUwMDNlaW5mbztcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEwNjpcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwNy19XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMDg6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9nZXRfaW5mbyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMDktXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMTAtLyoqXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMTE6ICogaTNjX2RldmljZV9kaXNhYmxlX2liaSgpIC0gRGlzYWJsZSBJQklzIGNvbWluZyBmcm9tIGEgc3BlY2lmaWMgZGV2aWNlXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMTItICogQGRldjogZGV2aWNlIG9uIHdoaWNoIElCSXMgc2hvdWxkIGJlIGRpc2FibGVkXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTE4LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTE5OmludCBpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjAte1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTEyMi1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEyMzpcdGlmIChpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChkZXYtXHUwMDNlYnVzKSkge1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI0Olx0XHRyZXQgPSBpM2NfYnVzX3JwbV9nZXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjUtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTI4LVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI5Olx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzMC1cdGlmIChkZXYtXHUwMDNlZGVzYykge1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTMxLVx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzMjpcdFx0cmV0ID0gaTNjX2Rldl9kaXNhYmxlX2liaV9sb2NrZWQoZGV2LVx1MDAzZWRlc2MpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTMzLVx0XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzNi1cdH1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzNzpcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzOC1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzOTpcdGlmICghcmV0IHx8IGkzY19idXNfcnBtX2liaV9hbGxvd2VkKGRldi1cdTAwM2VidXMpKVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTQwOlx0XHRpM2NfYnVzX3JwbV9wdXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDEtXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTQzLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE0NS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTE0Ni0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NzogKiBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoKSAtIEVuYWJsZSBJQklzIGNvbWluZyBmcm9tIGEgc3BlY2lmaWMgZGV2aWNlXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDgtICogQGRldjogZGV2aWNlIG9uIHdoaWNoIElCSXMgc2hvdWxkIGJlIGVuYWJsZWRcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNTEtICogYWxsIHBlbmRpbmcgSUJJcyB0byBiZSBwcm9jZXNzZWQuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIGRldmljZVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTUyOiAqIHdoZXJlIGkzY19kZXZpY2VfcmVxdWVzdF9pYmkoKSBoYXMgc3VjY2VlZGVkLlxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTUzLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTU4LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTU5OmludCBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoc3RydWN0IGkzY19kZXZpY2UgKmRldilcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE2MC17XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTYyLVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTYzOlx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNjc6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY4LVx0aWYgKGRldi1cdTAwM2VkZXNjKSB7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjktXHRcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTcwOlx0XHRyZXQgPSBpM2NfZGV2X2VuYWJsZV9pYmlfbG9ja2VkKGRldi1cdTAwM2VkZXNjKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE3MS1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzQtXHR9XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNzU6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNzc6XHRpZiAocmV0IHx8IGkzY19idXNfcnBtX2liaV9hbGxvd2VkKGRldi1cdTAwM2VidXMpKVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTc4Olx0XHRpM2NfYnVzX3JwbV9wdXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzktXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTgxLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjE4MjpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2VuYWJsZV9pYmkpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTgzLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTg0LS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTg1OiAqIGkzY19kZXZpY2VfcmVxdWVzdF9pYmkoKSAtIFJlcXVlc3QgYW4gSUJJXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xODYtICogQGRldjogZGV2aWNlIGZvciB3aGljaCB3ZSBzaG91bGQgZW5hYmxlIElCSXNcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xOTAtICogcHJvY2VzcyBJQklzIGNvbWluZyBmcm9tIEBkZXYuIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLCB0aGUgSUJJIGlzIG5vdFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTkxOiAqIGVuYWJsZWQgdW50aWwgaTNjX2RldmljZV9lbmFibGVfaWJpKCkgaXMgY2FsbGVkLlxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTkyLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTk0LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTk1OmludCBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxOTY6XHRcdFx0ICAgY29uc3Qgc3RydWN0IGkzY19pYmlfc2V0dXAgKnJlcSlcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE5Ny17XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjAyLVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjAzOlx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMDc6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjA4LVx0aWYgKGRldi1cdTAwM2VkZXNjKSB7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDktXHRcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjEwOlx0XHRyZXQgPSBpM2NfZGV2X3JlcXVlc3RfaWJpX2xvY2tlZChkZXYtXHUwMDNlZGVzYywgcmVxKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIxMS1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTQtXHR9XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMTU6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMTc6XHRpM2NfYnVzX3JwbV9wdXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTgtXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjIwLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyMTpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMi1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMy0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyNDogKiBpM2NfZGV2aWNlX2ZyZWVfaWJpKCkgLSBGcmVlIGFsbCByZXNvdXJjZXMgbmVlZGVkIGZvciBJQkkgaGFuZGxpbmdcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyNS0gKiBAZGV2OiBkZXZpY2Ugb24gd2hpY2ggeW91IHdhbnQgdG8gcmVsZWFzZSBJQkkgcmVzb3VyY2VzXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjI3LSAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGRlLWFsbG9jYXRpbmcgcmVzb3VyY2VzIHByZXZpb3VzbHlcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyODogKiBhbGxvY2F0ZWQgYnkgaTNjX2RldmljZV9yZXF1ZXN0X2liaSgpLiBJdCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGRpc2FibGluZ1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjI5OiAqIElCSXMgd2l0aCBpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKCkuXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMzAtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzE6dm9pZCBpM2NfZGV2aWNlX2ZyZWVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMzIte1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjMzOlx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIzNC1cdGlmIChkZXYtXHUwMDNlZGVzYykge1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM1LVx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIzNjpcdFx0aTNjX2Rldl9mcmVlX2liaV9sb2NrZWQoZGV2LVx1MDAzZWRlc2MpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM3LVx0XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM4LVx0fVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjM5Olx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjQwLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0MTpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2ZyZWVfaWJpKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0Mi1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0My0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0NDogKiBpM2NkZXZfdG9fZGV2KCkgLSBSZXR1cm5zIHRoZSBkZXZpY2UgZW1iZWRkZWQgaW4gQGkzY2RldlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjQ1OiAqIEBpM2NkZXY6IEkzQyBkZXZpY2VcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0Ni0gKlxuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0OC0gKi9cbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0OTpzdHJ1Y3QgZGV2aWNlICppM2NkZXZfdG9fZGV2KHN0cnVjdCBpM2NfZGV2aWNlICppM2NkZXYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTAte1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjUxOlx0cmV0dXJuIFx1MDAyNmkzY2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTItfVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGkzY2Rldl90b19kZXYpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjU0LVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjU1LS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjU2OiAqIGkzY19kZXZpY2VfbWF0Y2hfaWQoKSAtIFJldHVybnMgdGhlIGkzY19kZXZpY2VfaWQgZW50cnkgbWF0Y2hpbmcgQGkzY2RldlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjU3OiAqIEBpM2NkZXY6IEkzQyBkZXZpY2VcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1OC0gKiBAaWRfdGFibGU6IEkzQyBkZXZpY2UgbWF0Y2ggdGFibGVcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1OS0gKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjYwOiAqIFJldHVybjogYSBwb2ludGVyIHRvIGFuIGkzY19kZXZpY2VfaWQgb2JqZWN0IG9yIE5VTEwgaWYgdGhlcmUmIzM5O3Mgbm8gbWF0Y2guXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjEtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjI6Y29uc3Qgc3RydWN0IGkzY19kZXZpY2VfaWQgKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjYzOmkzY19kZXZpY2VfbWF0Y2hfaWQoc3RydWN0IGkzY19kZXZpY2UgKmkzY2RldixcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2NDpcdFx0ICAgIGNvbnN0IHN0cnVjdCBpM2NfZGV2aWNlX2lkICppZF90YWJsZSlcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI2NS17XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjY6XHRzdHJ1Y3QgaTNjX2RldmljZV9pbmZvIGRldmluZm87XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjc6XHRjb25zdCBzdHJ1Y3QgaTNjX2RldmljZV9pZCAqaWQ7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjgtXHR1MTYgbWFudWYsIHBhcnQsIGV4dF9pbmZvO1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTI3MC1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjI3MTpcdGkzY19kZXZpY2VfZ2V0X2luZm8oaTNjZGV2LCBcdTAwMjZkZXZpbmZvKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI3Mi1cbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yOTktfVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzAwOkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfbWF0Y2hfaWQpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzAxLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzAyLS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzAzOiAqIGkzY19kZXZpY2VfZ2V0X3N1cHBvcnRlZF94ZmVyX21vZGUgLSBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgdHJhbnNmZXIgbW9kZSBieVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzA0LSAqXHRcdFx0XHRcdGNvbm5lY3RlZCBtYXN0ZXIgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDctICogUmV0dXJuOiBhIGJpdCBtYXNrLCB3aGljaCBzdXBwb3J0ZWQgdHJhbnNmZXIgbW9kZSwgYml0IHBvc2l0aW9uIGlzIGRlZmluZWQgYXRcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMwODogKlx0ICAgZW51bSBpM2NfaGRyX21vZGVcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMwOS0gKi9cbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxMDp1MzIgaTNjX2RldmljZV9nZXRfc3VwcG9ydGVkX3hmZXJfbW9kZShzdHJ1Y3QgaTNjX2RldmljZSAqZGV2KVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzExLXtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxMjpcdHJldHVybiBpM2NfZGV2X2dldF9tYXN0ZXIoZGV2LVx1MDAzZWRlc2MpLVx1MDAzZXRoaXMtXHUwMDNlaW5mby5oZHJfY2FwIHwgQklUKEkzQ19TRFIpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzEzLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2dldF9zdXBwb3J0ZWRfeGZlcl9tb2RlKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMxNS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTMxNi0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNzogKiBpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIoKSAtIHJlZ2lzdGVyIGFuIEkzQyBkZXZpY2UgZHJpdmVyXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTgtICpcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjUtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMjY6aW50IGkzY19kcml2ZXJfcmVnaXN0ZXJfd2l0aF9vd25lcihzdHJ1Y3QgaTNjX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMyNy17XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjgtXHRkcnYtXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMjk6XHRkcnYtXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNmkzY19idXNfdHlwZTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMC1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMS1cdGlmICghZHJ2LVx1MDAzZXByb2JlKSB7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMzI6XHRcdHByX2VycihcJiMzNDtUcnlpbmcgdG8gcmVnaXN0ZXIgYW4gaTNjIGRyaXZlciB3aXRob3V0IHByb2JlIGNhbGxiYWNrXFxuXCYjMzQ7KTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMy1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzM3LX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjMzODpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzM5LVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQwLS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzQxOiAqIGkzY19kcml2ZXJfdW5yZWdpc3RlcigpIC0gdW5yZWdpc3RlciBhbiBJM0MgZGV2aWNlIGRyaXZlclxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQyLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQ2LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzQ3OnZvaWQgaTNjX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpM2NfZHJpdmVyICpkcnYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zNDgte1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTM1MC19XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozNTE6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RyaXZlcl91bnJlZ2lzdGVyKTtcbi0tXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0xMC1cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjExOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2kzYy9tYXN0ZXIuaFx1MDAzZVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMTItI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMTMtXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoxNDppbnQgX19tdXN0X2NoZWNrIGkzY19idXNfcnBtX2dldChzdHJ1Y3QgaTNjX2J1cyAqYnVzKTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE1OnZvaWQgaTNjX2J1c19ycG1fcHV0KHN0cnVjdCBpM2NfYnVzICpidXMpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTY6Ym9vbCBpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChzdHJ1Y3QgaTNjX2J1cyAqYnVzKTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTE3LVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTg6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTk6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soc3RydWN0IGkzY19idXMgKmJ1cyk7XG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0yMC1cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjIxOmludCBpM2NfZGV2X3NldGRhc2FfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyMjppbnQgaTNjX2Rldl9kb194ZmVyc19sb2NrZWQoc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2LFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MjM6XHRcdFx0ICAgIHN0cnVjdCBpM2NfeGZlciAqeGZlcnMsXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyNDpcdFx0XHQgICAgaW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MjU6aW50IGkzY19kZXZfZGlzYWJsZV9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyNjppbnQgaTNjX2Rldl9lbmFibGVfaWJpX2xvY2tlZChzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXYpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6Mjc6aW50IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldixcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI4Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaTNjX2liaV9zZXR1cCAqcmVxKTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI5OnZvaWQgaTNjX2Rldl9mcmVlX2liaV9sb2NrZWQoc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2KTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTMwLVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMzEtLyoqXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDozMjogKiBpM2Nfd3JpdGVsX2ZpZm8gLSBXcml0ZSBkYXRhIGJ1ZmZlciB0byAzMmJpdCBGSUZPXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0zMy0gKiBAYWRkcjogRklGTyBBZGRyZXNzIHRvIHdyaXRlIHRvXG4tLVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMzYtICovXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDozNzpzdGF0aWMgaW5saW5lIHZvaWQgaTNjX3dyaXRlbF9maWZvKHZvaWQgX19pb21lbSAqYWRkciwgY29uc3Qgdm9pZCAqYnVmLFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMzgtXHRcdFx0XHQgICBpbnQgbmJ5dGVzKVxuLS1cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTUzLS8qKlxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6NTQ6ICogaTNjX3JlYWRsX2ZpZm8gLSBSZWFkIGRhdGEgYnVmZmVyIGZyb20gMzJiaXQgRklGT1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtNTUtICogQGFkZHI6IEZJRk8gQWRkcmVzcyB0byByZWFkIGZyb21cbi0tXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC01OC0gKi9cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjU5OnN0YXRpYyBpbmxpbmUgdm9pZCBpM2NfcmVhZGxfZmlmbyhjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmJ1ZixcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTYwLVx0XHRcdFx0ICBpbnQgbmJ5dGVzKVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI1LVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjY6c3RhdGljIERFRklORV9JRFIoaTNjX2J1c19pZHIpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjc6c3RhdGljIERFRklORV9NVVRFWChpM2NfY29yZV9sb2NrKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI4OnN0YXRpYyBpbnQgX19pM2NfZmlyc3RfZHluYW1pY19idXNfbnVtO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjk6c3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQoaTNjX2J1c19ub3RpZmllcik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0zMC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTMxLS8qKlxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MzI6ICogaTNjX2J1c19tYWludGVuYW5jZV9sb2NrIC0gTG9jayB0aGUgYnVzIGZvciBhIG1haW50ZW5hbmNlIG9wZXJhdGlvblxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMzMtICogQGJ1czogSTNDIGJ1cyB0byB0YWtlIHRoZSBsb2NrIG9uXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNDYtICovXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo0NzpzdGF0aWMgdm9pZCBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cylcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTQ4LXtcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01Mi0vKipcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjUzOiAqIGkzY19idXNfbWFpbnRlbmFuY2VfdW5sb2NrIC0gUmVsZWFzZSB0aGUgYnVzIGxvY2sgYWZ0ZXIgYSBtYWludGVuYW5jZVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNTQtICpcdFx0XHQgICAgICBvcGVyYXRpb25cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01Ny0gKiBTaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1cyBtYWludGVuYW5jZSBvcGVyYXRpb24gaXMgZG9uZS4gU2VlXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo1ODogKiBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soKSBmb3IgbW9yZSBkZXRhaWxzIG9uIHdoYXQgdGhlc2UgbWFpbnRlbmFuY2VcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTU5LSAqIG9wZXJhdGlvbnMgYXJlLlxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjAtICovXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo2MTpzdGF0aWMgdm9pZCBpM2NfYnVzX21haW50ZW5hbmNlX3VubG9jayhzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjIte1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTY2LS8qKlxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Njc6ICogaTNjX2J1c19ub3JtYWx1c2VfbG9jayAtIExvY2sgdGhlIGJ1cyBmb3IgYSBub3JtYWwgb3BlcmF0aW9uXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy02OC0gKiBAYnVzOiBJM0MgYnVzIHRvIHRha2UgdGhlIGxvY2sgb25cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy03MC0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBidXMgbG9jayBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IGlzIG5vdCBhIG1haW50ZW5hbmNlXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo3MTogKiBvcGVyYXRpb24gKHNlZSBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soKSBmb3IgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy03Mi0gKiBtYWludGVuYW5jZSBvcGVyYXRpb25zKS4gQmFzaWNhbGx5IGFsbCBjb21tdW5pY2F0aW9ucyB3aXRoIEkzQyBkZXZpY2VzIGFyZVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTgxLSAqL1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6ODI6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04My17XG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtODctLyoqXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo4ODogKiBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2sgLSBSZWxlYXNlIHRoZSBidXMgbG9jayBhZnRlciBhIG5vcm1hbCBvcGVyYXRpb25cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTg5LSAqIEBidXM6IEkzQyBidXMgdG8gcmVsZWFzZSB0aGUgbG9jayBvblxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTkxLSAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIG5vcm1hbCBvcGVyYXRpb24gaXMgZG9uZS4gU2VlXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo5MjogKiBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKCkgZm9yIG1vcmUgZGV0YWlscyBvbiB3aGF0IHRoZXNlIG5vcm1hbCBvcGVyYXRpb25zXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05My0gKiBhcmUuXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05NC0gKi9cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjk1OnZvaWQgaTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05Ni17XG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtOTktXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMDA6c3RhdGljIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKlxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTAxOmkzY19idXNfdG9faTNjX21hc3RlcihzdHJ1Y3QgaTNjX2J1cyAqaTNjYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTAyLXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwMzpcdHJldHVybiBjb250YWluZXJfb2YoaTNjYnVzLCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyLCBidXMpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA0LX1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEwNS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwNjpzdGF0aWMgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqZGV2X3RvX2kzY21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMDcte1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTA4Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIsIGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMDktfVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTEwLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTExOnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGkzY19tYXN0ZXJfcnBtX2dldChzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMTIte1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEyMS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEyMjpzdGF0aWMgdm9pZCBpM2NfbWFzdGVyX3JwbV9wdXQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTIzLXtcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMjctXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMjg6aW50IGkzY19idXNfcnBtX2dldChzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTI5LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEzMDpcdHJldHVybiBpM2NfbWFzdGVyX3JwbV9nZXQoaTNjX2J1c190b19pM2NfbWFzdGVyKGJ1cykpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTMxLX1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzMi1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEzMzp2b2lkIGkzY19idXNfcnBtX3B1dChzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTM0LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEzNTpcdGkzY19tYXN0ZXJfcnBtX3B1dChpM2NfYnVzX3RvX2kzY19tYXN0ZXIoYnVzKSk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMzYtfVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTM3LVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTM4OmJvb2wgaTNjX2J1c19ycG1faWJpX2FsbG93ZWQoc3RydWN0IGkzY19idXMgKmJ1cylcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzOS17XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNDA6XHRyZXR1cm4gaTNjX2J1c190b19pM2NfbWFzdGVyKGJ1cyktXHUwMDNlcnBtX2liaV9hbGxvd2VkO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQxLX1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0Mi1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIGkzY19kZXZpY2VfdHlwZTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0NC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0NTpzdGF0aWMgc3RydWN0IGkzY19idXMgKmRldl90b19pM2NidXMoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQ2LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0NzpcdHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcjtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0OC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0OTpcdGlmIChkZXYtXHUwMDNldHlwZSA9PSBcdTAwMjZpM2NfZGV2aWNlX3R5cGUpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNTA6XHRcdHJldHVybiBkZXZfdG9faTNjZGV2KGRldiktXHUwMDNlYnVzO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUxLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTUyOlx0bWFzdGVyID0gZGV2X3RvX2kzY21hc3RlcihkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUzLVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE1Ni1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1NzpzdGF0aWMgc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2X3RvX2kzY2Rlc2Moc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTU4LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1OTpcdHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcjtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE2MC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE2MTpcdGlmIChkZXYtXHUwMDNldHlwZSA9PSBcdTAwMjZpM2NfZGV2aWNlX3R5cGUpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNjI6XHRcdHJldHVybiBkZXZfdG9faTNjZGV2KGRldiktXHUwMDNlZGVzYztcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE2My1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE2NDpcdG1hc3RlciA9IGRldl90b19pM2NtYXN0ZXIoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE2NS1cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0xNjk9c3RhdGljIHNzaXplX3QgYmNyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE3Mi17XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNzM6XHRzdHJ1Y3QgaTNjX2J1cyAqYnVzID0gZGV2X3RvX2kzY2J1cyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc0Olx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE3NS1cdHNzaXplX3QgcmV0O1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTc2LVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc3Olx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhidXMpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc4Olx0ZGVzYyA9IGRldl90b19pM2NkZXNjKGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNzktXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDJ4XFxuXCYjMzQ7LCBkZXNjLVx1MDAzZWluZm8uYmNyKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE4MDpcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhidXMpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTgxLVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jPTE4Nj1zdGF0aWMgc3NpemVfdCBkY3Jfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTg5LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE5MDpcdHN0cnVjdCBpM2NfYnVzICpidXMgPSBkZXZfdG9faTNjYnVzKGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTE6XHRzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXNjO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTkyLVx0c3NpemVfdCByZXQ7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTMtXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTQ6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTU6XHRkZXNjID0gZGV2X3RvX2kzY2Rlc2MoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE5Ni1cdHJldCA9IHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwMnhcXG5cJiMzNDssIGRlc2MtXHUwMDNlaW5mby5kY3IpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTk3Olx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTgtXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjAzPXN0YXRpYyBzc2l6ZV90IHBpZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMDYte1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjA3Olx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIwODpcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMDktXHRzc2l6ZV90IHJldDtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIxMC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIxMTpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIxMjpcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjEzLVx0cmV0ID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVsbHhcXG5cJiMzNDssIGRlc2MtXHUwMDNlaW5mby5waWQpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjE0Olx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMTUtXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjIwPXN0YXRpYyBzc2l6ZV90IGR5bmFtaWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMjMte1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjI0Olx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyNTpcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMjYtXHRzc2l6ZV90IHJldDtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIyNy1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyODpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyOTpcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjMwLVx0cmV0ID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyUwMnhcXG5cJiMzNDssIGRlc2MtXHUwMDNlaW5mby5keW5fYWRkcik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMzE6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIzMi1cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0yNDE9c3RhdGljIHNzaXplX3QgaGRyY2FwX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI0NC17XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNDU6XHRzdHJ1Y3QgaTNjX2J1cyAqYnVzID0gZGV2X3RvX2kzY2J1cyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjQ2Olx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI0Ny1cdHNzaXplX3Qgb2Zmc2V0ID0gMCwgcmV0O1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI1MC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI1MTpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI1MjpcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjUzLVx0Y2FwcyA9IGRlc2MtXHUwMDNlaW5mby5oZHJfY2FwO1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI3NS1vdXQ6XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNzY6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI3Ny1cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0yODI9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjg0LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI4NTpcdHN0cnVjdCBpM2NfZGV2aWNlICppM2MgPSBkZXZfdG9faTNjZGV2KGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODY6XHRzdHJ1Y3QgaTNjX2RldmljZV9pbmZvIGRldmluZm87XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yODctXHR1MTYgbWFudWYsIHBhcnQsIGV4dDtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI4OC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI4OTpcdGkzY19kZXZpY2VfZ2V0X2luZm8oaTNjLCBcdTAwMjZkZXZpbmZvKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI5MC1cdG1hbnVmID0gSTNDX1BJRF9NQU5VRl9JRChkZXZpbmZvLnBpZCk7XG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjk0LVx0aWYgKEkzQ19QSURfUk5EX0xPV0VSXzMyQklUUyhkZXZpbmZvLnBpZCkpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyOTU6XHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7aTNjOmRjciUwMlhtYW51ZiUwNFhcXG5cJiMzNDssIGRldmluZm8uZGNyLFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjk2LVx0XHRcdCAgICAgICBtYW51Zik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTAwMgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTUNUUCBvdmVyIEkzQyBEcml2ZXIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIE1DVFAgSTNDIGRyaXZlci4gSXQmIzM5O3MgZGVzaWduZWQgZm9yIGhhbmRsaW5nIE1DVFAgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIEkzQyBpbnRlcmZhY2UsIG1ha2VzIHNlbnNlLiBCdXQsIHRoZSBxdWVzdGlvbiBJJiMzOTt2ZSBnb3QgcmlnaHQgbm93IGlzLCBkb2VzIHRoZSBrZXJuZWwgaW5jbHVkZSBhbiBJM0MgZW11bGF0b3I/IE9yIHBlcmhhcHMgZXZlbiBhIHNpbXBsZSBkdW1teSBkcml2ZXIgZm9yIHRlc3RpbmcgcHVycG9zZXM/IEl0JiMzOTtkIGJlIGh1Z2VseSBoZWxwZnVsIHRvIGhhdmUgc29tZXRoaW5nIGxpa2UgdGhhdCBhdmFpbGFibGUsIGV2ZW4gaWYgaXQmIzM5O3MganVzdCBhIGJhc2ljIGltcGxlbWVudGF0aW9uLiBMZXQgbWUgZGlnIGFyb3VuZCBhbmQgc2VlIGlmIEkgY2FuIGxvY2F0ZSBzb21ldGhpbmcsIGEgJiMzNDtwbGFjZWhvbGRlciYjMzQ7IGRyaXZlciBvciBzaW1pbGFyLiBBbnl0aGluZyB0aGF0IGNhbiBzaW11bGF0ZSB0aGUgSTNDIGJ1cyBmb3IgZGV2ZWxvcG1lbnQgYW5kIHRlc3Rpbmcgd291bGQgYmUgaWRlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2kzYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmM9MTEzMz1zdGF0aWMgaXJxcmV0dXJuX3QgcmVuZXNhc19pM2NfdGVuZF9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYy0xMTQ1LVx0XHRcdFx0LyogV2UgZ290IGEgTkFDS0lFICovXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYzoxMTQ2Olx0XHRcdFx0cmVuZXNhc19yZWFkbChpM2MtXHUwMDNlcmVncywgTlREVEJQMCk7IC8qIGR1bW15IHJlYWQgKi9cbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jLTExNDctXHRcdFx0XHRyZW5lc2FzX2NsZWFyX2JpdChpM2MtXHUwMDNlcmVncywgQlNULCBCU1RfTkFDS0RGKTtcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYz0xMTc0PXN0YXRpYyBpcnFyZXR1cm5fdCByZW5lc2FzX2kzY19yeF9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYy0xMTk1LVx0XHRcdFx0cmVuZXNhc19zZXRfYml0KGkzYy1cdTAwM2VyZWdzLCBTQ1NUUkNUTCwgU0NTVFJDVExfUldFKTtcbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jOjExOTY6XHRcdFx0XHRyZW5lc2FzX3JlYWRsKGkzYy1cdTAwM2VyZWdzLCBOVERUQlAwKTsgLyogZHVtbXkgcmVhZCAqL1xuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmMtMTE5Ny1cdFx0XHRcdGlmIChjbWQtXHUwMDNlaTJjX2J5dGVzX2xlZnQgPT0gMSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU4OAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkkzQyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHByb2JsZW0sIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBJM0MgZHVtbXkgZHJpdmVyIGtpY2tpbmcgYXJvdW5kLiBUaGF0JiMzOTtzIGEgYml0IG9kZDsgdXN1YWxseSwgdGhlcmUmIzM5O3MgYXQgbGVhc3QgYSBwbGFjZWhvbGRlciBvciBza2VsZXRvbi4gSG1tLCB3YWl0IGEgc2Vjb25kLi4ubWF5YmUgaXQmIzM5O3Mgbm90IGEgJiMzNDtkdW1teSYjMzQ7IHBlciBzZSwgYnV0IHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgbGlrZSBhIG1vY2sgaW1wbGVtZW50YXRpb24/IEl0JiMzOTtzIHBvc3NpYmxlIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHdyb25nIHRlcm1pbm9sb2d5LiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyB3b3VsZCBiZSBpbiB0aGUgYGRyaXZlcnMvaTNjL21hc3Rlci9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGNvcmUgSTNDIG1hc3RlciBkZXZpY2UgZHJpdmVyIGZpbGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBtb2NrZWQgdmVyc2lvbiBvciBwbGFjZWhvbGRlciB0aGF0IEkgY2FuIGxvb2sgYXQgZm9yIGEgYmFzZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvaTNjL21hc3Rlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthZGktaTNjLW1hc3Rlci5jJiMzNDssCiAgICAmIzM0O2FzdDI2MDAtaTNjLW1hc3Rlci5jJiMzNDssCiAgICAmIzM0O2R3LWkzYy1tYXN0ZXIuYyYjMzQ7LAogICAgJiMzNDtkdy1pM2MtbWFzdGVyLmgmIzM0OywKICAgICYjMzQ7aTNjLW1hc3Rlci1jZG5zLmMmIzM0OywKICAgICYjMzQ7cmVuZXNhcy1pM2MuYyYjMzQ7LAogICAgJiMzNDtzdmMtaTNjLW1hc3Rlci5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O21pcGktaTNjLWhjaSYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTMyCgkJCQkJCQlvdXRwdXQ6IDE2OAoJCQkJCQkJdGhvdWdodHM6IDU4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJM0MgRHJpdmVyIFBhdGNoIEFuYWx5c2lzOiBOb3QgRnV6emFibGUqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgSTNDIGRyaXZlciBzaXR1YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwcmV0dHkgbGltaXRlZCBzZXQgb2YgaGFyZHdhcmUgZHJpdmVyczogYGFkaS1pM2MtbWFzdGVyLmNgLCBgYXN0MjYwMC1pM2MtbWFzdGVyLmNgLCBgZHctaTNjLW1hc3Rlci5jYCwgYW5kIHNvIG9uLCBhbG9uZyB3aXRoIGBtaXBpLWkzYy1oY2lgLiBUaGUgY3J1Y2lhbCBwb2ludCBpcywgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIEkzQyB3aXRoaW4gdGhpcyBrZXJuZWwuIFRoaXMgaW1tZWRpYXRlbHkgcHJlc2VudHMgYSBodXJkbGUgZm9yIGZ1enppbmcgYmVjYXVzZSBJIGNhbiYjMzk7dCBlYXNpbHkgdGVzdCB0aGVzZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IGFuIGVtdWxhdGVkIEkzQyBjb250cm9sbGVyLgoKSSBzdGFydGVkIHdvbmRlcmluZyBpZiBRRU1VIGVtdWxhdGVzIGFueSBvZiB0aGVzZSBoYXJkd2FyZSBjb250cm9sbGVycy4gUGVyaGFwcyB0aGUgYGFzdDI2MDAtaTNjLW1hc3Rlci5jYCBmb3IgQXNwZWVkIEFTVDI2MDAgbWlnaHQgYmUgZW11bGF0ZWQ/IFFFTVUgKmRvZXMqIGVtdWxhdGUgQVNUMjYwMCwgYnV0IHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IHNwZWNpZmljYWxseSBlbXVsYXRlcyB0aGUgSTNDIGNvbnRyb2xsZXIgd2l0aGluIHRoYXQgZW11bGF0aW9uLgoKTGV0IG1lIGdvIGJhY2sgYW5kIGxvb2sgYXQgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4gSXQmIzM5O3MgYWN0dWFsbHkgYSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBmaXguIEl0JiMzOTtzIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aCwgc3BlY2lmaWNhbGx5IGNsZWFuaW5nIHVwIHJlc291cmNlcyBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBtY3RwX2kzY19idXNfcmVtb3ZlX2FsbGAgY2FsbHMuIFRoaXMgY2hhbmdlIGlzbiYjMzk7dCBpbnRyb2R1Y2luZyBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcy4KCkdpdmVuIGFsbCBvZiB0aGlzLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgcGF0Y2ggaXMgbm90IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgY2xlYW51cCwgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhbmQgZGlmZmljdWx0IHRvIHRyaWdnZXIuIFRoZXJlJiMzOTtzIG5vdGhpbmcgbmV3IHRvIGZ1enosIHNvIEkgd2lsbCByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKGBtY3RwX2kzY19tb2RfaW5pdGApLiBJdCBhZGRzIGNsZWFudXAgY2FsbHMgKGBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBtY3RwX2kzY19idXNfcmVtb3ZlX2FsbGApIGlmIGBpM2NfZHJpdmVyX3JlZ2lzdGVyYCBmYWlscy4gTW9kdWxlIGluaXRpYWxpemF0aW9uIGVycm9yIHBhdGhzIGFyZSBnZW5lcmFsbHkgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhcmUgZGlmZmljdWx0IHRvIHRyaWdnZXIgd2l0aG91dCBzcGVjaWZpYyBmYXVsdCBpbmplY3Rpb24sIGFuZCB0aGlzIHNwZWNpZmljIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBvciBjb21wbGV4IHN0YXRlIG1hY2hpbmVzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuIEZ1cnRoZXJtb3JlLCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBJM0MgY29udHJvbGxlciBpbiB0aGUga2VybmVsIHRvIGVhc2lseSB0ZXN0IHRoaXMgYnVzIHN1YnN5c3RlbSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzc6NDEuMTc0MjYwNTc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE3MzEzMjgwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzc6NDEuMTc0MjY1NTg4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ5NTUyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkN2E3MGVlMGQ2OTFlOTk2MmUwNzMzZDdmNTk3Y2ZkNGY5NWE1ZjBhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDExOjM3OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuYyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY1xcbmluZGV4IDZkMmJiYWU3NDc3YjM5Li42NzdlNzdlOTE3YjY2NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcXG5AQCAtNzQwLDkgKzc0MCwxNCBAQCBzdGF0aWMgX19pbml0IGludCBtY3RwX2kzY19tb2RfaW5pdCh2b2lkKVxcbiBcXG4gXFx0cmMgPSBpM2NfZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xcbiBcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi1cXHRcXHRyZXR1cm4gcmM7XFxuK1xcdFxcdGdvdG8gZXJyX3VucmVnaXN0ZXJfbm90aWZpZXI7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl91bnJlZ2lzdGVyX25vdGlmaWVyOlxcbitcXHRpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbitcXHRtY3RwX2kzY19idXNfcmVtb3ZlX2FsbCgpO1xcbitcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuIHN0YXRpYyBfX2V4aXQgdm9pZCBtY3RwX2kzY19tb2RfZXhpdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMTozNzo0MS41NDk4MDI1OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzU1NzgwODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiAoYG1jdHBfaTNjX21vZF9pbml0YCkuIEl0IGFkZHMgY2xlYW51cCBjYWxscyAoYGkzY191bnJlZ2lzdGVyX25vdGlmaWVyYCBhbmQgYG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsYCkgaWYgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGZhaWxzLiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aHMgYXJlIGdlbmVyYWxseSBleGVjdXRlZCBhdCBtb3N0IG9uY2UsIGFyZSBkaWZmaWN1bHQgdG8gdHJpZ2dlciB3aXRob3V0IHNwZWNpZmljIGZhdWx0IGluamVjdGlvbiwgYW5kIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgbWFjaGluZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4gRnVydGhlcm1vcmUsIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIEkzQyBjb250cm9sbGVyIGluIHRoZSBrZXJuZWwgdG8gZWFzaWx5IHRlc3QgdGhpcyBidXMgc3Vic3lzdGVtIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDdhNzBlZTBkNjkxZTk5NjJlMDczM2Q3ZjU5N2NmZDRmOTVhNWYwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDExOjM3OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jXG5pbmRleCA2ZDJiYmFlNzQ3N2IzOS4uNjc3ZTc3ZTkxN2I2NjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcbisrKyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY1xuQEAgLTc0MCw5ICs3NDAsMTQgQEAgc3RhdGljIF9faW5pdCBpbnQgbWN0cF9pM2NfbW9kX2luaXQodm9pZClcbiBcbiBcdHJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xuIFx0aWYgKHJjIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gcmM7XG4rXHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfbm90aWZpZXI7XG4gXG4gXHRyZXR1cm4gMDtcbitcbitlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjpcbitcdGkzY191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNm1jdHBfaTNjX25vdGlmaWVyKTtcbitcdG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsKCk7XG4rXHRyZXR1cm4gcmM7XG4gfVxuIFxuIHN0YXRpYyBfX2V4aXQgdm9pZCBtY3RwX2kzY19tb2RfZXhpdCh2b2lkKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzc6NDEuNTQ5ODAzOTIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2MTg4MzU0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1DVFAtSTNDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtY3RwX2kzY19tb2RfaW5pdCgpYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlcmUgd2FzIGFuIGVycm9yIHBhdGggcmVsYXRlZCB0byB0aGUgYGkzY19kcml2ZXJfcmVnaXN0ZXIoKWAgZnVuY3Rpb24uIFByZXZpb3VzbHksIGlmIHRoYXQgcmVnaXN0cmF0aW9uIGZhaWxlZCwgdGhpbmdzIHdlcmVuJ3QgY2xlYW5lZCB1cCBjb3JyZWN0bHksIHdoaWNoIGNvdWxkIGxlYWQgdG8gcmVzb3VyY2UgbGVha3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhhdC4gTm93LCBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcigpYCBmYWlscywgdGhlIG5vdGlmaWVyIGlzIHVucmVnaXN0ZXJlZCwgYW5kIGFsbCBidXNlcyBhcmUgcmVtb3ZlZCB0byBtYWludGFpbiBjb25zaXN0ZW5jeS4gTGV0IG1lIGRpdmUgaW50byB0aGF0IGBtY3RwX2kzY19tb2RfaW5pdGAgZnVuY3Rpb24gYW5kIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCB0aGlzLiBJJ2xsIGNoZWNrIGhvdyB0aGV5IGVuc3VyZWQgdGhlIGludGVncml0eSBvZiByZXNvdXJjZXMgaWYgcmVnaXN0cmF0aW9uIGZhaWxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDExOjM3OjQ2LjAxMTY4OTEwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdFxcdC5yZW1vdmUgPSBtY3RwX2kzY19yZW1vdmUsXFxuIDcyNjpcXHRcXHQuaWRfdGFibGUgPSBtY3RwX2kzY19pZHMsXFxuIDcyNzpcXHR9O1xcbiA3Mjg6XFx0XFxuIDcyOTpcXHRzdGF0aWMgX19pbml0IGludCBtY3RwX2kzY19tb2RfaW5pdCh2b2lkKVxcbiA3MzA6XFx0e1xcbiA3MzE6XFx0XFx0aW50IHJjO1xcbiA3MzI6XFx0XFxuIDczMzpcXHRcXHRyYyA9IGkzY19yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbiA3MzQ6XFx0XFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbiA3MzU6XFx0XFx0XFx0aTNjX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xcbiA3MzY6XFx0XFx0XFx0cmV0dXJuIHJjO1xcbiA3Mzc6XFx0XFx0fVxcbiA3Mzg6XFx0XFxuIDczOTpcXHRcXHRpM2NfZm9yX2VhY2hfYnVzX2xvY2tlZChtY3RwX2kzY19idXNfYWRkX25ldywgTlVMTCk7XFxuIDc0MDpcXHRcXG4gNzQxOlxcdFxcdHJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2bWN0cF9pM2NfZHJpdmVyKTtcXG4gNzQyOlxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIDc0MzpcXHRcXHRcXHRnb3RvIGVycl91bnJlZ2lzdGVyX25vdGlmaWVyO1xcbiA3NDQ6XFx0XFxuIDc0NTpcXHRcXHRyZXR1cm4gMDtcXG4gNzQ2OlxcdFxcbiA3NDc6XFx0ZXJyX3VucmVnaXN0ZXJfbm90aWZpZXI6XFxuIDc0ODpcXHRcXHRpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbiA3NDk6XFx0XFx0bWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTtcXG4gNzUwOlxcdFxcdHJldHVybiByYztcXG4gNzUxOlxcdH1cXG4gNzUyOlxcdFxcbiA3NTM6XFx0c3RhdGljIF9fZXhpdCB2b2lkIG1jdHBfaTNjX21vZF9leGl0KHZvaWQpXFxuIDc1NDpcXHR7XFxuIDc1NTpcXHRcXHRpbnQgcmM7XFxuIDc1NjpcXHRcXG4gNzU3OlxcdFxcdGkzY19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2bWN0cF9pM2NfZHJpdmVyKTtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0cmMgPSBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbiA3NjA6XFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG4gNzYxOlxcdFxcdFxcdHByX3dhcm4oXFxcIk1DVFAgSTNDIGNvdWxkIG5vdCB1bnJlZ2lzdGVyIG5vdGlmaWVyLCAlZFxcXFxuXFxcIiwgcmMpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRtY3RwX2kzY19idXNfcmVtb3ZlX2FsbCgpO1xcbiA3NjQ6XFx0fVxcbiA3NjU6XFx0XFxuIDc2NjpcXHRtb2R1bGVfaW5pdChtY3RwX2kzY19tb2RfaW5pdCk7XFxuIDc2NzpcXHRtb2R1bGVfZXhpdChtY3RwX2kzY19tb2RfZXhpdCk7XFxuIDc2ODpcXHRcXG4gNzY5OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUoaTNjLCBtY3RwX2kzY19pZHMpO1xcbiA3NzA6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNQ1RQIEkzQyBkZXZpY2VcXFwiKTtcXG4gNzcxOlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4gNzcyOlxcdE1PRFVMRV9BVVRIT1IoXFxcIk1hdHQgSm9obnN0b24gXFx1MDAzY21hdHRAY29kZWNvbnN0cnVjdC5jb20uYXVcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDExOjM3OjQ2LjAxMTgwMzYwMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTcxMjE1NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBtY3RwX2kzY19tb2RfaW5pdGAsIHdoaWNoIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEl0J3MgYW4gZXJyb3IgcGF0aCBmaXgsIGJhc2ljYWxseSBhZGRpbmcgY2xlYW51cCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIHdyb25nIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbGVhbiB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aHMgYXJlIGdlbmVyYWxseSBkaWZmaWN1bHQgZm9yIHN5emthbGxlciB0byBoaXQgZGlyZWN0bHkgdW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYyBtZWNoYW5pc20gdG8gdHJpZ2dlciBtb2R1bGUgbG9hZGluZyBhbmQgZmFpbHVyZS4gU3l6a2FsbGVyIGNhbiBsb2FkL3VubG9hZCBtb2R1bGVzLCBvciB0cmlnZ2VyIGluaXQgZXJyb3JzIG9uIGJvb3QgaWYgdGhlIGRyaXZlcidzIGJ1aWx0LWluLlxuXG5Ib3dldmVyLCBgbWN0cF9pM2NfbW9kX2luaXRgIHJ1bnMgb24gbW9kdWxlIGxvYWQgb3IgYm9vdCwgYW5kIGlmIGl0IGZhaWxzLCBpdCBjbGVhbnMgdXAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlByb2JhYmx5IG5vdCB3b3J0aCBmdXp6aW5nLlwiIEl0J3MgYSBjbGVhbnVwIHBhdGguIEJ1dCB0aGVuIEkgcmVtZW1iZXIgZmF1bHQgaW5qZWN0aW9uISBJZiBmYXVsdCBpbmplY3Rpb24gaXMgZW5hYmxlZCwgYSBmYWlsZWQgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGNhbGwgKmNvdWxkKiB0cmlnZ2VyIHRoaXMgcGF0aC4gVGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIGl0ICp3b3J0aCogZnV6emluZz8gTW9kdWxlIGluaXQgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgcnVuIG9ubHkgb25jZS4gU3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gZnV6eiBgaW5pdF9tb2R1bGVgIGlmIGl0IGhhZCBhY2Nlc3MgdG8gbW9kdWxlIGZpbGVzLCBidXQgdXN1YWxseSBpdCBkb2Vzbid0LlxuXG5Ob3csIHRoZSBwYXRjaCBpdHNlbGYgaXMgaW5jcmVkaWJseSBzaW1wbGU6IGl0J3MganVzdCBhZGRpbmcgY2xlYW51cCB0byBhbiBlcnJvciBwYXRoIGluIGEgbW9kdWxlIGluaXQgZnVuY3Rpb24uIEdpdmVuIHRoaXMsIEkgd2FzIGdvaW5nIHRvIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSBlcnJvciBwYXRocyBkdXJpbmcgbW9kdWxlIGluaXQgYXJlIGhhcmQgdG8gcmVhY2gsIGFuZCBpdCBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGF0dGFjayBzdXJmYWNlIG9yIGNvbXBsZXggbG9naWMuXG5cbkJ1dCwgYmVmb3JlIEkgY29tbWl0IHRvIHRoYXQsIGxldCdzIGxvb2sgYXQgdGhlIGd1aWRlbGluZXMuIExldCdzIHNlZS4uLiB0aGUgZ3VpZGVsaW5lcyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoaW5ncyBsaWtlIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIG9yIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuIE9rYXksIG15IHBhdGNoIGlzbid0IHRoYXQuIEl0IGFsc28gc2F5cyByZXR1cm4gYGZhbHNlYCBpZiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJcyAqdGhpcyogaW1wb3NzaWJsZT9cblxuV2VsbCwgaWYgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGZhaWxzLCBpdCdzIGFuIGVycm9yIHBhdGgsIGFuZCBpdCAqY2FuKiBiZSByZWFjaGVkIHZpYSBmYXVsdCBpbmplY3Rpb24uIFNvLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBUaGUgZ3VpZGVsaW5lcyBtZW50aW9uIHRoYXQgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBzaG91bGQgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSBpZiB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE9rYXksIGl0J3MgYSBkcml2ZXIgbW9kdWxlIGluaXQsIHdoaWNoIG1lYW5zIGRyaXZlciBhbmQga2VybmVsIGxvZ2ljLlxuXG5TbywgbGV0J3MgY2hlY2sgaWYgTUNUUCBJM0MgaXMgcmVhY2hhYmxlLiBNQ1RQIG92ZXIgSTNDLiBJM0MgaXMgYSBoYXJkd2FyZSBidXMuIElzIHRoZXJlIGFuIEkzQyBzb2Z0d2FyZSBlbXVsYXRvcj8gSSBuZWVkIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIEkzQyBlbXVsYXRvciBvciBkdW1teSBkcml2ZXIgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcHJhY3RpY2FsbHkgcmVhY2hlZCB2aWEgc3l6a2FsbGVyLiBJZiB0aGVyZSBpcywgdGhlbiBgV29ydGhGdXp6aW5nPXRydWVgLiBJZiBub3QsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDAzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDEuNTgzMDIxMDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3OTkzNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaTNjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaTNjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgyNDYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvaTNjL0tjb25maWc9Mz1tZW51Y29uZmlnIEkzQ1xcbi0tXFxuZHJpdmVycy9pM2MvS2NvbmZpZy0xOS1cXHQgIFRoaXMgSTNDIHN1cHBvcnQgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZVxcbmRyaXZlcnMvaTNjL0tjb25maWc6MjA6XFx0ICB3aWxsIGJlIGNhbGxlZCBpM2MuXFxuZHJpdmVycy9pM2MvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL2kzYy9LY29uZmlnPTIyPWlmIEkzQ1xcbmRyaXZlcnMvaTNjL0tjb25maWc6MjM6c291cmNlIFxcXCJkcml2ZXJzL2kzYy9tYXN0ZXIvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2kzYy9LY29uZmlnLTI0LWVuZGlmICMgSTNDXFxuLS1cXG5kcml2ZXJzL2kzYy9LY29uZmlnPTI2PWNvbmZpZyBJM0NfT1JfSTJDXFxuLS1cXG5kcml2ZXJzL2kzYy9LY29uZmlnLTMwLVxcdGhlbHBcXG5kcml2ZXJzL2kzYy9LY29uZmlnOjMxOlxcdCAgRGV2aWNlIGRyaXZlcnMgdXNpbmcgbW9kdWxlX2kzY19pMmNfZHJpdmVyKCkgY2FuIHVzZSBlaXRoZXJcXG5kcml2ZXJzL2kzYy9LY29uZmlnOjMyOlxcdCAgaTJjIG9yIGkzYyBob3N0cywgYnV0IGNhbm5vdCBiZSBidWlsdC1pbiBmb3IgdGhlIGtlcm5lbCB3aGVuXFxuZHJpdmVycy9pM2MvS2NvbmZpZy0zMy1cXHQgIENPTkZJR19JM0M9bS5cXG4tLVxcbmRyaXZlcnMvaTNjL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvaTNjL01ha2VmaWxlOjI6aTNjLXlcXHRcXHRcXHRcXHQ6PSBkZXZpY2UubyBtYXN0ZXIub1xcbmRyaXZlcnMvaTNjL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0kzQylcXHRcXHQrPSBpM2Mub1xcbmRyaXZlcnMvaTNjL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0kzQylcXHRcXHQrPSBtYXN0ZXIvXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNy0vKipcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxODogKiBpM2NfZGV2aWNlX2RvX3hmZXJzKCkgLSBkbyBJM0MgdHJhbnNmZXJzIGRpcmVjdGVkIHRvIGEgc3BlY2lmaWMgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTktICpcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTM1LSAqL1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjM2OmludCBpM2NfZGV2aWNlX2RvX3hmZXJzKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYsIHN0cnVjdCBpM2NfeGZlciAqeGZlcnMsXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Mzc6XFx0XFx0XFx0aW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzgte1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNDgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NDk6XFx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy01MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNTItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NTM6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NTQ6XFx0cmV0ID0gaTNjX2Rldl9kb194ZmVyc19sb2NrZWQoZGV2LVxcdTAwM2VkZXNjLCB4ZmVycywgbnhmZXJzLCBtb2RlKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo1NTpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTU2LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjU3OlxcdGkzY19idXNfcnBtX3B1dChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNTgtXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy02MC19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjE6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9kb194ZmVycyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNjItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNjMtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjQ6ICogaTNjX2RldmljZV9kb19zZXRkYXNhKCkgLSBkbyBJM0MgZHluYW1pYyBhZGRyZXNzIGFzc2lnbmVtZW50IHdpdGhcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy02NS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBhZGRyZXNzXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03MC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo3MTppbnQgaTNjX2RldmljZV9kb19zZXRkYXNhKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzIte1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzQtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NzU6XFx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Nzk6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6ODA6XFx0cmV0ID0gaTNjX2Rldl9zZXRkYXNhX2xvY2tlZChkZXYtXFx1MDAzZWRlc2MpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjgxOlxcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtODItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6ODM6XFx0aTNjX2J1c19ycG1fcHV0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy04NC1cXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg2LX1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo4NzpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2RvX3NldGRhc2EpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg4LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg5LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjkwOiAqIGkzY19kZXZpY2VfZ2V0X2luZm8oKSAtIGdldCBJM0MgZGV2aWNlIGluZm9ybWF0aW9uXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtOTEtICpcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTk2LSAqL1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjk3OnZvaWQgaTNjX2RldmljZV9nZXRfaW5mbyhjb25zdCBzdHJ1Y3QgaTNjX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjk4OlxcdFxcdFxcdCBzdHJ1Y3QgaTNjX2RldmljZV9pbmZvICppbmZvKVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTk5LXtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwMi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMDM6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTA0LVxcdGlmIChkZXYtXFx1MDAzZWRlc2MpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTA1LVxcdFxcdCppbmZvID0gZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpbmZvO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEwNjpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwNy19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTA4OkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfZ2V0X2luZm8pO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwOS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMTAtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTExOiAqIGkzY19kZXZpY2VfZGlzYWJsZV9pYmkoKSAtIERpc2FibGUgSUJJcyBjb21pbmcgZnJvbSBhIHNwZWNpZmljIGRldmljZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTExMi0gKiBAZGV2OiBkZXZpY2Ugb24gd2hpY2ggSUJJcyBzaG91bGQgYmUgZGlzYWJsZWRcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTExOC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMTk6aW50IGkzY19kZXZpY2VfZGlzYWJsZV9pYmkoc3RydWN0IGkzY19kZXZpY2UgKmRldilcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjAte1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTIyLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEyMzpcXHRpZiAoaTNjX2J1c19ycG1faWJpX2FsbG93ZWQoZGV2LVxcdTAwM2VidXMpKSB7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI0OlxcdFxcdHJldCA9IGkzY19idXNfcnBtX2dldChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTI1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI5OlxcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzMC1cXHRpZiAoZGV2LVxcdTAwM2VkZXNjKSB7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTMxLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlZGVzYy1cXHUwMDNlaWJpX2xvY2spO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzMjpcXHRcXHRyZXQgPSBpM2NfZGV2X2Rpc2FibGVfaWJpX2xvY2tlZChkZXYtXFx1MDAzZWRlc2MpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzMy1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlZGVzYy1cXHUwMDNlaWJpX2xvY2spO1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTM2LVxcdH1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMzc6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMzgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTM5OlxcdGlmICghcmV0IHx8IGkzY19idXNfcnBtX2liaV9hbGxvd2VkKGRldi1cXHUwMDNlYnVzKSlcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNDA6XFx0XFx0aTNjX2J1c19ycG1fcHV0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDMtfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDUtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTQ2LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NzogKiBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoKSAtIEVuYWJsZSBJQklzIGNvbWluZyBmcm9tIGEgc3BlY2lmaWMgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTQ4LSAqIEBkZXY6IGRldmljZSBvbiB3aGljaCBJQklzIHNob3VsZCBiZSBlbmFibGVkXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNTEtICogYWxsIHBlbmRpbmcgSUJJcyB0byBiZSBwcm9jZXNzZWQuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIGRldmljZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE1MjogKiB3aGVyZSBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKCkgaGFzIHN1Y2NlZWRlZC5cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNTMtICpcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE1OC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNTk6aW50IGkzY19kZXZpY2VfZW5hYmxlX2liaShzdHJ1Y3QgaTNjX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE2MC17XFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTYzOlxcdHJldCA9IGkzY19idXNfcnBtX2dldChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjYtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTY3OlxcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE2OC1cXHRpZiAoZGV2LVxcdTAwM2VkZXNjKSB7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY5LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlZGVzYy1cXHUwMDNlaWJpX2xvY2spO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE3MDpcXHRcXHRyZXQgPSBpM2NfZGV2X2VuYWJsZV9pYmlfbG9ja2VkKGRldi1cXHUwMDNlZGVzYyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTcxLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzQtXFx0fVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE3NTpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE3Ni1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNzc6XFx0aWYgKHJldCB8fCBpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChkZXYtXFx1MDAzZWJ1cykpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTc4OlxcdFxcdGkzY19idXNfcnBtX3B1dChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTc5LVxcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTgxLX1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxODI6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9lbmFibGVfaWJpKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xODMtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTg0LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE4NTogKiBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKCkgLSBSZXF1ZXN0IGFuIElCSVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE4Ni0gKiBAZGV2OiBkZXZpY2UgZm9yIHdoaWNoIHdlIHNob3VsZCBlbmFibGUgSUJJc1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTkwLSAqIHByb2Nlc3MgSUJJcyBjb21pbmcgZnJvbSBAZGV2LiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgdGhlIElCSSBpcyBub3RcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxOTE6ICogZW5hYmxlZCB1bnRpbCBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoKSBpcyBjYWxsZWQuXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTkyLSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xOTQtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTk1OmludCBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTk2OlxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBpM2NfaWJpX3NldHVwICpyZXEpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTk3LXtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIwMi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMDM6XFx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIwNi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMDc6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjA4LVxcdGlmIChkZXYtXFx1MDAzZWRlc2MpIHtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDktXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjEwOlxcdFxcdHJldCA9IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2VkKGRldi1cXHUwMDNlZGVzYywgcmVxKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTEtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWRlc2MtXFx1MDAzZWliaV9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIxNC1cXHR9XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjE1OlxcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjE2LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIxNzpcXHRpM2NfYnVzX3JwbV9wdXQoZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIxOC1cXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMC19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjIxOkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfcmVxdWVzdF9pYmkpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMjMtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjI0OiAqIGkzY19kZXZpY2VfZnJlZV9pYmkoKSAtIEZyZWUgYWxsIHJlc291cmNlcyBuZWVkZWQgZm9yIElCSSBoYW5kbGluZ1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyNS0gKiBAZGV2OiBkZXZpY2Ugb24gd2hpY2ggeW91IHdhbnQgdG8gcmVsZWFzZSBJQkkgcmVzb3VyY2VzXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMjctICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGUtYWxsb2NhdGluZyByZXNvdXJjZXMgcHJldmlvdXNseVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyODogKiBhbGxvY2F0ZWQgYnkgaTNjX2RldmljZV9yZXF1ZXN0X2liaSgpLiBJdCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGRpc2FibGluZ1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyOTogKiBJQklzIHdpdGggaTNjX2RldmljZV9kaXNhYmxlX2liaSgpLlxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIzMC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzE6dm9pZCBpM2NfZGV2aWNlX2ZyZWVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjMyLXtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzM6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM0LVxcdGlmIChkZXYtXFx1MDAzZWRlc2MpIHtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMzUtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjM2OlxcdFxcdGkzY19kZXZfZnJlZV9pYmlfbG9ja2VkKGRldi1cXHUwMDNlZGVzYyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM3LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM4LVxcdH1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzk6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNDAtfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0MTpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2ZyZWVfaWJpKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNDItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjQzLS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0NDogKiBpM2NkZXZfdG9fZGV2KCkgLSBSZXR1cm5zIHRoZSBkZXZpY2UgZW1iZWRkZWQgaW4gQGkzY2RldlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0NTogKiBAaTNjZGV2OiBJM0MgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjQ2LSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNDgtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjQ5OnN0cnVjdCBkZXZpY2UgKmkzY2Rldl90b19kZXYoc3RydWN0IGkzY19kZXZpY2UgKmkzY2RldilcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTAte1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI1MTpcXHRyZXR1cm4gXFx1MDAyNmkzY2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1Mi19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGkzY2Rldl90b19kZXYpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1NC1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTUtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjU2OiAqIGkzY19kZXZpY2VfbWF0Y2hfaWQoKSAtIFJldHVybnMgdGhlIGkzY19kZXZpY2VfaWQgZW50cnkgbWF0Y2hpbmcgQGkzY2RldlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI1NzogKiBAaTNjZGV2OiBJM0MgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjU4LSAqIEBpZF90YWJsZTogSTNDIGRldmljZSBtYXRjaCB0YWJsZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1OS0gKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2MDogKiBSZXR1cm46IGEgcG9pbnRlciB0byBhbiBpM2NfZGV2aWNlX2lkIG9iamVjdCBvciBOVUxMIGlmIHRoZXJlJ3Mgbm8gbWF0Y2guXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjYxLSAqL1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2Mjpjb25zdCBzdHJ1Y3QgaTNjX2RldmljZV9pZCAqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjYzOmkzY19kZXZpY2VfbWF0Y2hfaWQoc3RydWN0IGkzY19kZXZpY2UgKmkzY2RldixcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjQ6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpM2NfZGV2aWNlX2lkICppZF90YWJsZSlcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjUte1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2NjpcXHRzdHJ1Y3QgaTNjX2RldmljZV9pbmZvIGRldmluZm87XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjY3OlxcdGNvbnN0IHN0cnVjdCBpM2NfZGV2aWNlX2lkICppZDtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjgtXFx0dTE2IG1hbnVmLCBwYXJ0LCBleHRfaW5mbztcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI3MC1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNzE6XFx0aTNjX2RldmljZV9nZXRfaW5mbyhpM2NkZXYsIFxcdTAwMjZkZXZpbmZvKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNzItXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yOTktfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMwMDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX21hdGNoX2lkKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDEtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzAyLS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMwMzogKiBpM2NfZGV2aWNlX2dldF9zdXBwb3J0ZWRfeGZlcl9tb2RlIC0gUmV0dXJucyB0aGUgc3VwcG9ydGVkIHRyYW5zZmVyIG1vZGUgYnlcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDQtICpcXHRcXHRcXHRcXHRcXHRjb25uZWN0ZWQgbWFzdGVyIGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDctICogUmV0dXJuOiBhIGJpdCBtYXNrLCB3aGljaCBzdXBwb3J0ZWQgdHJhbnNmZXIgbW9kZSwgYml0IHBvc2l0aW9uIGlzIGRlZmluZWQgYXRcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMDg6ICpcXHQgICBlbnVtIGkzY19oZHJfbW9kZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMwOS0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMTA6dTMyIGkzY19kZXZpY2VfZ2V0X3N1cHBvcnRlZF94ZmVyX21vZGUoc3RydWN0IGkzY19kZXZpY2UgKmRldilcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTEte1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxMjpcXHRyZXR1cm4gaTNjX2Rldl9nZXRfbWFzdGVyKGRldi1cXHUwMDNlZGVzYyktXFx1MDAzZXRoaXMtXFx1MDAzZWluZm8uaGRyX2NhcCB8IEJJVChJM0NfU0RSKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTMtfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2dldF9zdXBwb3J0ZWRfeGZlcl9tb2RlKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTUtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzE2LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNzogKiBpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIoKSAtIHJlZ2lzdGVyIGFuIEkzQyBkZXZpY2UgZHJpdmVyXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzE4LSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjUtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzI2OmludCBpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIoc3RydWN0IGkzY19kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzI3LXtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjgtXFx0ZHJ2LVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMjk6XFx0ZHJ2LVxcdTAwM2Vkcml2ZXIuYnVzID0gXFx1MDAyNmkzY19idXNfdHlwZTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMzAtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzMxLVxcdGlmICghZHJ2LVxcdTAwM2Vwcm9iZSkge1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMzMjpcXHRcXHRwcl9lcnIoXFxcIlRyeWluZyB0byByZWdpc3RlciBhbiBpM2MgZHJpdmVyIHdpdGhvdXQgcHJvYmUgY2FsbGJhY2tcXFxcblxcXCIpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMy1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzNy19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzM4OkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kcml2ZXJfcmVnaXN0ZXJfd2l0aF9vd25lcik7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzM5LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTM0MC0vKipcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozNDE6ICogaTNjX2RyaXZlcl91bnJlZ2lzdGVyKCkgLSB1bnJlZ2lzdGVyIGFuIEkzQyBkZXZpY2UgZHJpdmVyXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQyLSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zNDYtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzQ3OnZvaWQgaTNjX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpM2NfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQ4LXtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTM1MC19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzUxOkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kcml2ZXJfdW5yZWdpc3Rlcik7XFxuLS1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0xMC1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoxMTojaW5jbHVkZSBcXHUwMDNjbGludXgvaTNjL21hc3Rlci5oXFx1MDAzZVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTEyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTEzLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE0OmludCBfX211c3RfY2hlY2sgaTNjX2J1c19ycG1fZ2V0KHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE1OnZvaWQgaTNjX2J1c19ycG1fcHV0KHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE2OmJvb2wgaTNjX2J1c19ycG1faWJpX2FsbG93ZWQoc3RydWN0IGkzY19idXMgKmJ1cyk7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMTctXFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTg6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE5OnZvaWQgaTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTIwLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjIxOmludCBpM2NfZGV2X3NldGRhc2FfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MjI6aW50IGkzY19kZXZfZG9feGZlcnNfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldixcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyMzpcXHRcXHRcXHQgICAgc3RydWN0IGkzY194ZmVyICp4ZmVycyxcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyNDpcXHRcXHRcXHQgICAgaW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI1OmludCBpM2NfZGV2X2Rpc2FibGVfaWJpX2xvY2tlZChzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXYpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI2OmludCBpM2NfZGV2X2VuYWJsZV9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6Mjc6aW50IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldixcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyODpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGkzY19pYmlfc2V0dXAgKnJlcSk7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6Mjk6dm9pZCBpM2NfZGV2X2ZyZWVfaWJpX2xvY2tlZChzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXYpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTMwLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTMxLS8qKlxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjMyOiAqIGkzY193cml0ZWxfZmlmbyAtIFdyaXRlIGRhdGEgYnVmZmVyIHRvIDMyYml0IEZJRk9cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0zMy0gKiBAYWRkcjogRklGTyBBZGRyZXNzIHRvIHdyaXRlIHRvXFxuLS1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0zNi0gKi9cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDozNzpzdGF0aWMgaW5saW5lIHZvaWQgaTNjX3dyaXRlbF9maWZvKHZvaWQgX19pb21lbSAqYWRkciwgY29uc3Qgdm9pZCAqYnVmLFxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTM4LVxcdFxcdFxcdFxcdCAgIGludCBuYnl0ZXMpXFxuLS1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC01My0vKipcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDo1NDogKiBpM2NfcmVhZGxfZmlmbyAtIFJlYWQgZGF0YSBidWZmZXIgZnJvbSAzMmJpdCBGSUZPXFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtNTUtICogQGFkZHI6IEZJRk8gQWRkcmVzcyB0byByZWFkIGZyb21cXG4tLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTU4LSAqL1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjU5OnN0YXRpYyBpbmxpbmUgdm9pZCBpM2NfcmVhZGxfZmlmbyhjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmJ1ZixcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC02MC1cXHRcXHRcXHRcXHQgIGludCBuYnl0ZXMpXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yNS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNjpzdGF0aWMgREVGSU5FX0lEUihpM2NfYnVzX2lkcik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjc6c3RhdGljIERFRklORV9NVVRFWChpM2NfY29yZV9sb2NrKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODpzdGF0aWMgaW50IF9faTNjX2ZpcnN0X2R5bmFtaWNfYnVzX251bTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyOTpzdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChpM2NfYnVzX25vdGlmaWVyKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0zMC1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0zMS0vKipcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzozMjogKiBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2sgLSBMb2NrIHRoZSBidXMgZm9yIGEgbWFpbnRlbmFuY2Ugb3BlcmF0aW9uXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMzMtICogQGJ1czogSTNDIGJ1cyB0byB0YWtlIHRoZSBsb2NrIG9uXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy00Ni0gKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo0NzpzdGF0aWMgdm9pZCBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cylcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy00OC17XFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01Mi0vKipcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo1MzogKiBpM2NfYnVzX21haW50ZW5hbmNlX3VubG9jayAtIFJlbGVhc2UgdGhlIGJ1cyBsb2NrIGFmdGVyIGEgbWFpbnRlbmFuY2VcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01NC0gKlxcdFxcdFxcdCAgICAgIG9wZXJhdGlvblxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNTctICogU2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBidXMgbWFpbnRlbmFuY2Ugb3BlcmF0aW9uIGlzIGRvbmUuIFNlZVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjU4OiAqIGkzY19idXNfbWFpbnRlbmFuY2VfbG9jaygpIGZvciBtb3JlIGRldGFpbHMgb24gd2hhdCB0aGVzZSBtYWludGVuYW5jZVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTU5LSAqIG9wZXJhdGlvbnMgYXJlLlxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTYwLSAqL1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjYxOnN0YXRpYyB2b2lkIGkzY19idXNfbWFpbnRlbmFuY2VfdW5sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjIte1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjYtLyoqXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Njc6ICogaTNjX2J1c19ub3JtYWx1c2VfbG9jayAtIExvY2sgdGhlIGJ1cyBmb3IgYSBub3JtYWwgb3BlcmF0aW9uXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjgtICogQGJ1czogSTNDIGJ1cyB0byB0YWtlIHRoZSBsb2NrIG9uXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy03MC0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBidXMgbG9jayBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IGlzIG5vdCBhIG1haW50ZW5hbmNlXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6NzE6ICogb3BlcmF0aW9uIChzZWUgaTNjX2J1c19tYWludGVuYW5jZV9sb2NrKCkgZm9yIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZlxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTcyLSAqIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMpLiBCYXNpY2FsbHkgYWxsIGNvbW11bmljYXRpb25zIHdpdGggSTNDIGRldmljZXMgYXJlXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04MS0gKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo4Mjp2b2lkIGkzY19idXNfbm9ybWFsdXNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cylcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04My17XFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04Ny0vKipcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo4ODogKiBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2sgLSBSZWxlYXNlIHRoZSBidXMgbG9jayBhZnRlciBhIG5vcm1hbCBvcGVyYXRpb25cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04OS0gKiBAYnVzOiBJM0MgYnVzIHRvIHJlbGVhc2UgdGhlIGxvY2sgb25cXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTkxLSAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIG5vcm1hbCBvcGVyYXRpb24gaXMgZG9uZS4gU2VlXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6OTI6ICogaTNjX2J1c19ub3JtYWx1c2VfbG9jaygpIGZvciBtb3JlIGRldGFpbHMgb24gd2hhdCB0aGVzZSBub3JtYWwgb3BlcmF0aW9uc1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTkzLSAqIGFyZS5cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05NC0gKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo5NTp2b2lkIGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTk2LXtcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTk5LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwMDpzdGF0aWMgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTAxOmkzY19idXNfdG9faTNjX21hc3RlcihzdHJ1Y3QgaTNjX2J1cyAqaTNjYnVzKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEwMi17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTAzOlxcdHJldHVybiBjb250YWluZXJfb2YoaTNjYnVzLCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyLCBidXMpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEwNC19XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA1LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwNjpzdGF0aWMgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqZGV2X3RvX2kzY21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA3LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMDg6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIsIGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA5LX1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMTAtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTExOnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGkzY19tYXN0ZXJfcnBtX2dldChzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTEyLXtcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEyMS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMjI6c3RhdGljIHZvaWQgaTNjX21hc3Rlcl9ycG1fcHV0KHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcilcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMjMte1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTI3LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEyODppbnQgaTNjX2J1c19ycG1fZ2V0KHN0cnVjdCBpM2NfYnVzICpidXMpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTI5LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMzA6XFx0cmV0dXJuIGkzY19tYXN0ZXJfcnBtX2dldChpM2NfYnVzX3RvX2kzY19tYXN0ZXIoYnVzKSk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTMxLX1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMzItXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTMzOnZvaWQgaTNjX2J1c19ycG1fcHV0KHN0cnVjdCBpM2NfYnVzICpidXMpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTM0LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMzU6XFx0aTNjX21hc3Rlcl9ycG1fcHV0KGkzY19idXNfdG9faTNjX21hc3RlcihidXMpKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMzYtfVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzNy1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMzg6Ym9vbCBpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzOS17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTQwOlxcdHJldHVybiBpM2NfYnVzX3RvX2kzY19tYXN0ZXIoYnVzKS1cXHUwMDNlcnBtX2liaV9hbGxvd2VkO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0MS19XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQyLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIGkzY19kZXZpY2VfdHlwZTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNDQtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTQ1OnN0YXRpYyBzdHJ1Y3QgaTNjX2J1cyAqZGV2X3RvX2kzY2J1cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQ2LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNDc6XFx0c3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0OC1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNDk6XFx0aWYgKGRldi1cXHUwMDNldHlwZSA9PSBcXHUwMDI2aTNjX2RldmljZV90eXBlKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1MDpcXHRcXHRyZXR1cm4gZGV2X3RvX2kzY2RldihkZXYpLVxcdTAwM2VidXM7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUxLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1MjpcXHRtYXN0ZXIgPSBkZXZfdG9faTNjbWFzdGVyKGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUzLVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTU2LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1NzpzdGF0aWMgc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2X3RvX2kzY2Rlc2Moc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE1OC17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTU5OlxcdHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcjtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNjAtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTYxOlxcdGlmIChkZXYtXFx1MDAzZXR5cGUgPT0gXFx1MDAyNmkzY19kZXZpY2VfdHlwZSlcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNjI6XFx0XFx0cmV0dXJuIGRldl90b19pM2NkZXYoZGV2KS1cXHUwMDNlZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNjMtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTY0OlxcdG1hc3RlciA9IGRldl90b19pM2NtYXN0ZXIoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNjUtXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0xNjk9c3RhdGljIHNzaXplX3QgYmNyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTcyLXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNzM6XFx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNzQ6XFx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNzUtXFx0c3NpemVfdCByZXQ7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTc2LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE3NzpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc4OlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE3OS1cXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTAyeFxcXFxuXFxcIiwgZGVzYy1cXHUwMDNlaW5mby5iY3IpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE4MDpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xODEtXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0xODY9c3RhdGljIHNzaXplX3QgZGNyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTg5LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTA6XFx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTE6XFx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTItXFx0c3NpemVfdCByZXQ7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTkzLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE5NDpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTk1OlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE5Ni1cXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTAyeFxcXFxuXFxcIiwgZGVzYy1cXHUwMDNlaW5mby5kY3IpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE5NzpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTgtXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0yMDM9c3RhdGljIHNzaXplX3QgcGlkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjA2LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMDc6XFx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMDg6XFx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMDktXFx0c3NpemVfdCByZXQ7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjEwLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIxMTpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjEyOlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIxMy1cXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIiVsbHhcXFxcblxcXCIsIGRlc2MtXFx1MDAzZWluZm8ucGlkKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMTQ6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjE1LVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjIwPXN0YXRpYyBzc2l6ZV90IGR5bmFtaWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIyMy17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjI0OlxcdHN0cnVjdCBpM2NfYnVzICpidXMgPSBkZXZfdG9faTNjYnVzKGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjI1OlxcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjI2LVxcdHNzaXplX3QgcmV0O1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIyNy1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMjg6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhidXMpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyOTpcXHRkZXNjID0gZGV2X3RvX2kzY2Rlc2MoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMzAtXFx0cmV0ID0gc3lzZnNfZW1pdChidWYsIFxcXCIlMDJ4XFxcXG5cXFwiLCBkZXNjLVxcdTAwM2VpbmZvLmR5bl9hZGRyKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMzE6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjMyLVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjQxPXN0YXRpYyBzc2l6ZV90IGhkcmNhcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI0NC17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjQ1OlxcdHN0cnVjdCBpM2NfYnVzICpidXMgPSBkZXZfdG9faTNjYnVzKGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjQ2OlxcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjQ3LVxcdHNzaXplX3Qgb2Zmc2V0ID0gMCwgcmV0O1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjUwLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI1MTpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjUyOlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI1My1cXHRjYXBzID0gZGVzYy1cXHUwMDNlaW5mby5oZHJfY2FwO1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjc1LW91dDpcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNzY6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjc3LVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjgyPXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjg0LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODU6XFx0c3RydWN0IGkzY19kZXZpY2UgKmkzYyA9IGRldl90b19pM2NkZXYoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODY6XFx0c3RydWN0IGkzY19kZXZpY2VfaW5mbyBkZXZpbmZvO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI4Ny1cXHR1MTYgbWFudWYsIHBhcnQsIGV4dDtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yODgtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjg5OlxcdGkzY19kZXZpY2VfZ2V0X2luZm8oaTNjLCBcXHUwMDI2ZGV2aW5mbyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjkwLVxcdG1hbnVmID0gSTNDX1BJRF9NQU5VRl9JRChkZXZpbmZvLnBpZCk7XFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yOTQtXFx0aWYgKEkzQ19QSURfUk5EX0xPV0VSXzMyQklUUyhkZXZpbmZvLnBpZCkpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjk1OlxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcImkzYzpkY3IlMDJYbWFudWYlMDRYXFxcXG5cXFwiLCBkZXZpbmZvLmRjcixcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yOTYtXFx0XFx0XFx0ICAgICAgIG1hbnVmKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDEuNjM5ODI3OTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MTg2OTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1DVFAgb3ZlciBJM0MgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgTUNUUCBJM0MgZHJpdmVyLiBJdCdzIGRlc2lnbmVkIGZvciBoYW5kbGluZyBNQ1RQIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBJM0MgaW50ZXJmYWNlLCBtYWtlcyBzZW5zZS4gQnV0LCB0aGUgcXVlc3Rpb24gSSd2ZSBnb3QgcmlnaHQgbm93IGlzLCBkb2VzIHRoZSBrZXJuZWwgaW5jbHVkZSBhbiBJM0MgZW11bGF0b3I/IE9yIHBlcmhhcHMgZXZlbiBhIHNpbXBsZSBkdW1teSBkcml2ZXIgZm9yIHRlc3RpbmcgcHVycG9zZXM/IEl0J2QgYmUgaHVnZWx5IGhlbHBmdWwgdG8gaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGF0IGF2YWlsYWJsZSwgZXZlbiBpZiBpdCdzIGp1c3QgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbi4gTGV0IG1lIGRpZyBhcm91bmQgYW5kIHNlZSBpZiBJIGNhbiBsb2NhdGUgc29tZXRoaW5nLCBhIFwicGxhY2Vob2xkZXJcIiBkcml2ZXIgb3Igc2ltaWxhci4gQW55dGhpbmcgdGhhdCBjYW4gc2ltdWxhdGUgdGhlIEkzQyBidXMgZm9yIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nIHdvdWxkIGJlIGlkZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAwMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDExOjM4OjA1LjUzMTY5OTQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3Nzk1MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR1bW15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaTNjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYz0xMTMzPXN0YXRpYyBpcnFyZXR1cm5fdCByZW5lc2FzX2kzY190ZW5kX2lzcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmMtMTE0NS1cXHRcXHRcXHRcXHQvKiBXZSBnb3QgYSBOQUNLSUUgKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYzoxMTQ2OlxcdFxcdFxcdFxcdHJlbmVzYXNfcmVhZGwoaTNjLVxcdTAwM2VyZWdzLCBOVERUQlAwKTsgLyogZHVtbXkgcmVhZCAqL1xcbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jLTExNDctXFx0XFx0XFx0XFx0cmVuZXNhc19jbGVhcl9iaXQoaTNjLVxcdTAwM2VyZWdzLCBCU1QsIEJTVF9OQUNLREYpO1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmM9MTE3ND1zdGF0aWMgaXJxcmV0dXJuX3QgcmVuZXNhc19pM2NfcnhfaXNyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYy0xMTk1LVxcdFxcdFxcdFxcdHJlbmVzYXNfc2V0X2JpdChpM2MtXFx1MDAzZXJlZ3MsIFNDU1RSQ1RMLCBTQ1NUUkNUTF9SV0UpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jOjExOTY6XFx0XFx0XFx0XFx0cmVuZXNhc19yZWFkbChpM2MtXFx1MDAzZXJlZ3MsIE5URFRCUDApOyAvKiBkdW1teSByZWFkICovXFxuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmMtMTE5Ny1cXHRcXHRcXHRcXHRpZiAoY21kLVxcdTAwM2VpMmNfYnl0ZXNfbGVmdCA9PSAxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMTozODowNS41ODk0OTgwODhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUyNDEzMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkkzQyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwcm9ibGVtLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIG5vIGRlZGljYXRlZCBJM0MgZHVtbXkgZHJpdmVyIGtpY2tpbmcgYXJvdW5kLiBUaGF0J3MgYSBiaXQgb2RkOyB1c3VhbGx5LCB0aGVyZSdzIGF0IGxlYXN0IGEgcGxhY2Vob2xkZXIgb3Igc2tlbGV0b24uIEhtbSwgd2FpdCBhIHNlY29uZC4uLm1heWJlIGl0J3Mgbm90IGEgXCJkdW1teVwiIHBlciBzZSwgYnV0IHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgbGlrZSBhIG1vY2sgaW1wbGVtZW50YXRpb24/IEl0J3MgcG9zc2libGUgSSdtIGxvb2tpbmcgZm9yIHRoZSB3cm9uZyB0ZXJtaW5vbG9neS4gTGV0J3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyB3b3VsZCBiZSBpbiB0aGUgYGRyaXZlcnMvaTNjL21hc3Rlci9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBjb3JlIEkzQyBtYXN0ZXIgZGV2aWNlIGRyaXZlciBmaWxlcy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBtb2NrZWQgdmVyc2lvbiBvciBwbGFjZWhvbGRlciB0aGF0IEkgY2FuIGxvb2sgYXQgZm9yIGEgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTg4LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDkuODQxOTEyODA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2kzYy9tYXN0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFkaS1pM2MtbWFzdGVyLmNcIixcbiAgICBcImFzdDI2MDAtaTNjLW1hc3Rlci5jXCIsXG4gICAgXCJkdy1pM2MtbWFzdGVyLmNcIixcbiAgICBcImR3LWkzYy1tYXN0ZXIuaFwiLFxuICAgIFwiaTNjLW1hc3Rlci1jZG5zLmNcIixcbiAgICBcInJlbmVzYXMtaTNjLmNcIixcbiAgICBcInN2Yy1pM2MtbWFzdGVyLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwibWlwaS1pM2MtaGNpXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDkuODQxOTYzNDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDYzNTk1OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkkzQyBEcml2ZXIgUGF0Y2ggQW5hbHlzaXM6IE5vdCBGdXp6YWJsZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgSTNDIGRyaXZlciBzaXR1YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHByZXR0eSBsaW1pdGVkIHNldCBvZiBoYXJkd2FyZSBkcml2ZXJzOiBgYWRpLWkzYy1tYXN0ZXIuY2AsIGBhc3QyNjAwLWkzYy1tYXN0ZXIuY2AsIGBkdy1pM2MtbWFzdGVyLmNgLCBhbmQgc28gb24sIGFsb25nIHdpdGggYG1pcGktaTNjLWhjaWAuIFRoZSBjcnVjaWFsIHBvaW50IGlzLCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciBJM0Mgd2l0aGluIHRoaXMga2VybmVsLiBUaGlzIGltbWVkaWF0ZWx5IHByZXNlbnRzIGEgaHVyZGxlIGZvciBmdXp6aW5nIGJlY2F1c2UgSSBjYW4ndCBlYXNpbHkgdGVzdCB0aGVzZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IGFuIGVtdWxhdGVkIEkzQyBjb250cm9sbGVyLlxuXG5JIHN0YXJ0ZWQgd29uZGVyaW5nIGlmIFFFTVUgZW11bGF0ZXMgYW55IG9mIHRoZXNlIGhhcmR3YXJlIGNvbnRyb2xsZXJzLiBQZXJoYXBzIHRoZSBgYXN0MjYwMC1pM2MtbWFzdGVyLmNgIGZvciBBc3BlZWQgQVNUMjYwMCBtaWdodCBiZSBlbXVsYXRlZD8gUUVNVSAqZG9lcyogZW11bGF0ZSBBU1QyNjAwLCBidXQgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHRoZSBJM0MgY29udHJvbGxlciB3aXRoaW4gdGhhdCBlbXVsYXRpb24uXG5cbkxldCBtZSBnbyBiYWNrIGFuZCBsb29rIGF0IHRoZSBwYXRjaCBtb3JlIGNsb3NlbHkuIEl0J3MgYWN0dWFsbHkgYSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBmaXguIEl0J3MgaW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRoLCBzcGVjaWZpY2FsbHkgY2xlYW5pbmcgdXAgcmVzb3VyY2VzIGlmIGBpM2NfZHJpdmVyX3JlZ2lzdGVyYCBmYWlscy4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgIGNhbGxzLiBUaGlzIGNoYW5nZSBpc24ndCBpbnRyb2R1Y2luZyBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcy5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhlIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJdCdzIGEgY2xlYW51cCwgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhbmQgZGlmZmljdWx0IHRvIHRyaWdnZXIuIFRoZXJlJ3Mgbm90aGluZyBuZXcgdG8gZnV6eiwgc28gSSB3aWxsIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTMyLCJPdXRwdXRUb2tlbnMiOjE2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MjIuOTA1NTYxNjI1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKGBtY3RwX2kzY19tb2RfaW5pdGApLiBJdCBhZGRzIGNsZWFudXAgY2FsbHMgKGBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBtY3RwX2kzY19idXNfcmVtb3ZlX2FsbGApIGlmIGBpM2NfZHJpdmVyX3JlZ2lzdGVyYCBmYWlscy4gTW9kdWxlIGluaXRpYWxpemF0aW9uIGVycm9yIHBhdGhzIGFyZSBnZW5lcmFsbHkgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhcmUgZGlmZmljdWx0IHRvIHRyaWdnZXIgd2l0aG91dCBzcGVjaWZpYyBmYXVsdCBpbmplY3Rpb24sIGFuZCB0aGlzIHNwZWNpZmljIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBvciBjb21wbGV4IHN0YXRlIG1hY2hpbmVzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuIEZ1cnRoZXJtb3JlLCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBJM0MgY29udHJvbGxlciBpbiB0aGUga2VybmVsIHRvIGVhc2lseSB0ZXN0IHRoaXMgYnVzIHN1YnN5c3RlbSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiAoYG1jdHBfaTNjX21vZF9pbml0YCkuIEl0IGFkZHMgY2xlYW51cCBjYWxscyAoYGkzY191bnJlZ2lzdGVyX25vdGlmaWVyYCBhbmQgYG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsYCkgaWYgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGZhaWxzLiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aHMgYXJlIGdlbmVyYWxseSBleGVjdXRlZCBhdCBtb3N0IG9uY2UsIGFyZSBkaWZmaWN1bHQgdG8gdHJpZ2dlciB3aXRob3V0IHNwZWNpZmljIGZhdWx0IGluamVjdGlvbiwgYW5kIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgbWFjaGluZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4gRnVydGhlcm1vcmUsIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIEkzQyBjb250cm9sbGVyIGluIHRoZSBrZXJuZWwgdG8gZWFzaWx5IHRlc3QgdGhpcyBidXMgc3Vic3lzdGVtIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowsf8c7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 11:14:51 +0000 UTC FinishedAt: 2026-07-14 11:38:23 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ3YTcwZWUwZDY5MWU5OTYyZTA3MzNkN2Y1OTdjZmQ0Zjk1YTVmMGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAxMTozNzo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmMgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcbmluZGV4IDZkMmJiYWU3NDc3YjM5Li42NzdlNzdlOTE3YjY2NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jXG5AQCAtNzQwLDkgJiM0Mzs3NDAsMTQgQEAgc3RhdGljIF9faW5pdCBpbnQgbWN0cF9pM2NfbW9kX2luaXQodm9pZClcbiBcbiBcdHJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xuIFx0aWYgKHJjIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gcmM7XG4mIzQzO1x0XHRnb3RvIGVycl91bnJlZ2lzdGVyX25vdGlmaWVyO1xuIFxuIFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjpcbiYjNDM7XHRpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcdTAwMjZtY3RwX2kzY19ub3RpZmllcik7XG4mIzQzO1x0bWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTtcbiYjNDM7XHRyZXR1cm4gcmM7XG4gfVxuIFxuIHN0YXRpYyBfX2V4aXQgdm9pZCBtY3RwX2kzY19tb2RfZXhpdCh2b2lkKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDdhNzBlZTBkNjkxZTk5NjJlMDczM2Q3ZjU5N2NmZDRmOTVhNWYwYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDExOjM3OjQwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jCmluZGV4IDZkMmJiYWU3NDc3YjM5Li42NzdlNzdlOTE3YjY2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuYwpAQCAtNzQwLDkgJiM0Mzs3NDAsMTQgQEAgc3RhdGljIF9faW5pdCBpbnQgbWN0cF9pM2NfbW9kX2luaXQodm9pZCkKIAogCXJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcigmYW1wO21jdHBfaTNjX2RyaXZlcik7CiAJaWYgKHJjICZsdDsgMCkKLQkJcmV0dXJuIHJjOwomIzQzOwkJZ290byBlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjsKIAogCXJldHVybiAwOwomIzQzOwomIzQzO2Vycl91bnJlZ2lzdGVyX25vdGlmaWVyOgomIzQzOwlpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcigmYW1wO21jdHBfaTNjX25vdGlmaWVyKTsKJiM0MzsJbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTsKJiM0MzsJcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgX19leGl0IHZvaWQgbWN0cF9pM2NfbW9kX2V4aXQodm9pZCkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1DVFAtSTNDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY2AsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYG1jdHBfaTNjX21vZF9pbml0KClgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGVyZSB3YXMgYW4gZXJyb3IgcGF0aCByZWxhdGVkIHRvIHRoZSBgaTNjX2RyaXZlcl9yZWdpc3RlcigpYCBmdW5jdGlvbi4gUHJldmlvdXNseSwgaWYgdGhhdCByZWdpc3RyYXRpb24gZmFpbGVkLCB0aGluZ3Mgd2VyZW4mIzM5O3QgY2xlYW5lZCB1cCBjb3JyZWN0bHksIHdoaWNoIGNvdWxkIGxlYWQgdG8gcmVzb3VyY2UgbGVha3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhhdC4gTm93LCBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcigpYCBmYWlscywgdGhlIG5vdGlmaWVyIGlzIHVucmVnaXN0ZXJlZCwgYW5kIGFsbCBidXNlcyBhcmUgcmVtb3ZlZCB0byBtYWludGFpbiBjb25zaXN0ZW5jeS4gTGV0IG1lIGRpdmUgaW50byB0aGF0IGBtY3RwX2kzY19tb2RfaW5pdGAgZnVuY3Rpb24gYW5kIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCB0aGlzLiBJJiMzOTtsbCBjaGVjayBob3cgdGhleSBlbnN1cmVkIHRoZSBpbnRlZ3JpdHkgb2YgcmVzb3VyY2VzIGlmIHJlZ2lzdHJhdGlvbiBmYWlsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcyNTpcdFx0LnJlbW92ZSA9IG1jdHBfaTNjX3JlbW92ZSxcbiA3MjY6XHRcdC5pZF90YWJsZSA9IG1jdHBfaTNjX2lkcyxcbiA3Mjc6XHR9O1xuIDcyODpcdFxuIDcyOTpcdHN0YXRpYyBfX2luaXQgaW50IG1jdHBfaTNjX21vZF9pbml0KHZvaWQpXG4gNzMwOlx0e1xuIDczMTpcdFx0aW50IHJjO1xuIDczMjpcdFxuIDczMzpcdFx0cmMgPSBpM2NfcmVnaXN0ZXJfbm90aWZpZXIoXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xuIDczNDpcdFx0aWYgKHJjIFx1MDAzYyAwKSB7XG4gNzM1Olx0XHRcdGkzY19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xuIDczNjpcdFx0XHRyZXR1cm4gcmM7XG4gNzM3Olx0XHR9XG4gNzM4Olx0XG4gNzM5Olx0XHRpM2NfZm9yX2VhY2hfYnVzX2xvY2tlZChtY3RwX2kzY19idXNfYWRkX25ldywgTlVMTCk7XG4gNzQwOlx0XG4gNzQxOlx0XHRyYyA9IGkzY19kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2bWN0cF9pM2NfZHJpdmVyKTtcbiA3NDI6XHRcdGlmIChyYyBcdTAwM2MgMClcbiA3NDM6XHRcdFx0Z290byBlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjtcbiA3NDQ6XHRcbiA3NDU6XHRcdHJldHVybiAwO1xuIDc0NjpcdFxuIDc0NzpcdGVycl91bnJlZ2lzdGVyX25vdGlmaWVyOlxuIDc0ODpcdFx0aTNjX3VucmVnaXN0ZXJfbm90aWZpZXIoXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xuIDc0OTpcdFx0bWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTtcbiA3NTA6XHRcdHJldHVybiByYztcbiA3NTE6XHR9XG4gNzUyOlx0XG4gNzUzOlx0c3RhdGljIF9fZXhpdCB2b2lkIG1jdHBfaTNjX21vZF9leGl0KHZvaWQpXG4gNzU0Olx0e1xuIDc1NTpcdFx0aW50IHJjO1xuIDc1NjpcdFxuIDc1NzpcdFx0aTNjX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNm1jdHBfaTNjX2RyaXZlcik7XG4gNzU4Olx0XG4gNzU5Olx0XHRyYyA9IGkzY191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNm1jdHBfaTNjX25vdGlmaWVyKTtcbiA3NjA6XHRcdGlmIChyYyBcdTAwM2MgMClcbiA3NjE6XHRcdFx0cHJfd2FybihcJiMzNDtNQ1RQIEkzQyBjb3VsZCBub3QgdW5yZWdpc3RlciBub3RpZmllciwgJWRcXG5cJiMzNDssIHJjKTtcbiA3NjI6XHRcbiA3NjM6XHRcdG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsKCk7XG4gNzY0Olx0fVxuIDc2NTpcdFxuIDc2NjpcdG1vZHVsZV9pbml0KG1jdHBfaTNjX21vZF9pbml0KTtcbiA3Njc6XHRtb2R1bGVfZXhpdChtY3RwX2kzY19tb2RfZXhpdCk7XG4gNzY4Olx0XG4gNzY5Olx0TU9EVUxFX0RFVklDRV9UQUJMRShpM2MsIG1jdHBfaTNjX2lkcyk7XG4gNzcwOlx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O01DVFAgSTNDIGRldmljZVwmIzM0Oyk7XG4gNzcxOlx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiA3NzI6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O01hdHQgSm9obnN0b24gXHUwMDNjbWF0dEBjb2RlY29uc3RydWN0LmNvbS5hdVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAwMwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDYzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFdvcnRoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBtY3RwX2kzY19tb2RfaW5pdGAsIHdoaWNoIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEl0JiMzOTtzIGFuIGVycm9yIHBhdGggZml4LCBiYXNpY2FsbHkgYWRkaW5nIGNsZWFudXAgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZyBkdXJpbmcgbW9kdWxlIGluaXRpYWxpemF0aW9uLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxlYW4gdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gTW9kdWxlIGluaXRpYWxpemF0aW9uIGVycm9yIHBhdGhzIGFyZSBnZW5lcmFsbHkgZGlmZmljdWx0IGZvciBzeXprYWxsZXIgdG8gaGl0IGRpcmVjdGx5IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIG1lY2hhbmlzbSB0byB0cmlnZ2VyIG1vZHVsZSBsb2FkaW5nIGFuZCBmYWlsdXJlLiBTeXprYWxsZXIgY2FuIGxvYWQvdW5sb2FkIG1vZHVsZXMsIG9yIHRyaWdnZXIgaW5pdCBlcnJvcnMgb24gYm9vdCBpZiB0aGUgZHJpdmVyJiMzOTtzIGJ1aWx0LWluLgoKSG93ZXZlciwgYG1jdHBfaTNjX21vZF9pbml0YCBydW5zIG9uIG1vZHVsZSBsb2FkIG9yIGJvb3QsIGFuZCBpZiBpdCBmYWlscywgaXQgY2xlYW5zIHVwLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtQcm9iYWJseSBub3Qgd29ydGggZnV6emluZy4mIzM0OyBJdCYjMzk7cyBhIGNsZWFudXAgcGF0aC4gQnV0IHRoZW4gSSByZW1lbWJlciBmYXVsdCBpbmplY3Rpb24hIElmIGZhdWx0IGluamVjdGlvbiBpcyBlbmFibGVkLCBhIGZhaWxlZCBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgY2FsbCAqY291bGQqIHRyaWdnZXIgdGhpcyBwYXRoLiBUaGUgcXVlc3Rpb24gcmVtYWluczogaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBNb2R1bGUgaW5pdCBmdW5jdGlvbnMgYXJlIHR5cGljYWxseSBydW4gb25seSBvbmNlLiBTeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBmdXp6IGBpbml0X21vZHVsZWAgaWYgaXQgaGFkIGFjY2VzcyB0byBtb2R1bGUgZmlsZXMsIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJiMzOTt0LgoKTm93LCB0aGUgcGF0Y2ggaXRzZWxmIGlzIGluY3JlZGlibHkgc2ltcGxlOiBpdCYjMzk7cyBqdXN0IGFkZGluZyBjbGVhbnVwIHRvIGFuIGVycm9yIHBhdGggaW4gYSBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gR2l2ZW4gdGhpcywgSSB3YXMgZ29pbmcgdG8gbWFyayBpdCBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYCBiZWNhdXNlIGVycm9yIHBhdGhzIGR1cmluZyBtb2R1bGUgaW5pdCBhcmUgaGFyZCB0byByZWFjaCwgYW5kIGl0IGRvZXNuJiMzOTt0IGV4cG9zZSBhbnkgbmV3IGF0dGFjayBzdXJmYWNlIG9yIGNvbXBsZXggbG9naWMuCgpCdXQsIGJlZm9yZSBJIGNvbW1pdCB0byB0aGF0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZ3VpZGVsaW5lcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZ3VpZGVsaW5lcyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoaW5ncyBsaWtlIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIG9yIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuIE9rYXksIG15IHBhdGNoIGlzbiYjMzk7dCB0aGF0LiBJdCBhbHNvIHNheXMgcmV0dXJuIGBmYWxzZWAgaWYgaXQgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXMgKnRoaXMqIGltcG9zc2libGU/CgpXZWxsLCBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMsIGl0JiMzOTtzIGFuIGVycm9yIHBhdGgsIGFuZCBpdCAqY2FuKiBiZSByZWFjaGVkIHZpYSBmYXVsdCBpbmplY3Rpb24uIFNvLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBUaGUgZ3VpZGVsaW5lcyBtZW50aW9uIHRoYXQgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBzaG91bGQgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSBpZiB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE9rYXksIGl0JiMzOTtzIGEgZHJpdmVyIG1vZHVsZSBpbml0LCB3aGljaCBtZWFucyBkcml2ZXIgYW5kIGtlcm5lbCBsb2dpYy4KClNvLCBsZXQmIzM5O3MgY2hlY2sgaWYgTUNUUCBJM0MgaXMgcmVhY2hhYmxlLiBNQ1RQIG92ZXIgSTNDLiBJM0MgaXMgYSBoYXJkd2FyZSBidXMuIElzIHRoZXJlIGFuIEkzQyBzb2Z0d2FyZSBlbXVsYXRvcj8gSSBuZWVkIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIEkzQyBlbXVsYXRvciBvciBkdW1teSBkcml2ZXIgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcHJhY3RpY2FsbHkgcmVhY2hlZCB2aWEgc3l6a2FsbGVyLiBJZiB0aGVyZSBpcywgdGhlbiBgV29ydGhGdXp6aW5nPXRydWVgLiBJZiBub3QsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2kzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvaTNjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI0NiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9pM2MvS2NvbmZpZz0zPW1lbnVjb25maWcgSTNDXG4tLVxuZHJpdmVycy9pM2MvS2NvbmZpZy0xOS1cdCAgVGhpcyBJM0Mgc3VwcG9ydCBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlXG5kcml2ZXJzL2kzYy9LY29uZmlnOjIwOlx0ICB3aWxsIGJlIGNhbGxlZCBpM2MuXG5kcml2ZXJzL2kzYy9LY29uZmlnLTIxLVxuZHJpdmVycy9pM2MvS2NvbmZpZz0yMj1pZiBJM0NcbmRyaXZlcnMvaTNjL0tjb25maWc6MjM6c291cmNlIFwmIzM0O2RyaXZlcnMvaTNjL21hc3Rlci9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2kzYy9LY29uZmlnLTI0LWVuZGlmICMgSTNDXG4tLVxuZHJpdmVycy9pM2MvS2NvbmZpZz0yNj1jb25maWcgSTNDX09SX0kyQ1xuLS1cbmRyaXZlcnMvaTNjL0tjb25maWctMzAtXHRoZWxwXG5kcml2ZXJzL2kzYy9LY29uZmlnOjMxOlx0ICBEZXZpY2UgZHJpdmVycyB1c2luZyBtb2R1bGVfaTNjX2kyY19kcml2ZXIoKSBjYW4gdXNlIGVpdGhlclxuZHJpdmVycy9pM2MvS2NvbmZpZzozMjpcdCAgaTJjIG9yIGkzYyBob3N0cywgYnV0IGNhbm5vdCBiZSBidWlsdC1pbiBmb3IgdGhlIGtlcm5lbCB3aGVuXG5kcml2ZXJzL2kzYy9LY29uZmlnLTMzLVx0ICBDT05GSUdfSTNDPW0uXG4tLVxuZHJpdmVycy9pM2MvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2kzYy9NYWtlZmlsZToyOmkzYy15XHRcdFx0XHQ6PSBkZXZpY2UubyBtYXN0ZXIub1xuZHJpdmVycy9pM2MvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfSTNDKVx0XHQmIzQzOz0gaTNjLm9cbmRyaXZlcnMvaTNjL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0kzQylcdFx0JiM0Mzs9IG1hc3Rlci9cbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNy0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE4OiAqIGkzY19kZXZpY2VfZG9feGZlcnMoKSAtIGRvIEkzQyB0cmFuc2ZlcnMgZGlyZWN0ZWQgdG8gYSBzcGVjaWZpYyBkZXZpY2VcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE5LSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzUtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozNjppbnQgaTNjX2RldmljZV9kb194ZmVycyhzdHJ1Y3QgaTNjX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTNjX3hmZXIgKnhmZXJzLFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Mzc6XHRcdFx0aW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zOC17XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNDgtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo0OTpcdHJldCA9IGkzY19idXNfcnBtX2dldChkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTUwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy01Mi1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjUzOlx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjU0Olx0cmV0ID0gaTNjX2Rldl9kb194ZmVyc19sb2NrZWQoZGV2LVx1MDAzZWRlc2MsIHhmZXJzLCBueGZlcnMsIG1vZGUpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6NTU6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy01Ni1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjU3Olx0aTNjX2J1c19ycG1fcHV0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtNTgtXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNjAtfVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjE6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9kb194ZmVycyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy02Mi1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTYzLS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjQ6ICogaTNjX2RldmljZV9kb19zZXRkYXNhKCkgLSBkbyBJM0MgZHluYW1pYyBhZGRyZXNzIGFzc2lnbmVtZW50IHdpdGhcbmRyaXZlcnMvaTNjL2RldmljZS5jLTY1LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGFkZHJlc3Ncbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03MC0gKi9cbmRyaXZlcnMvaTNjL2RldmljZS5jOjcxOmludCBpM2NfZGV2aWNlX2RvX3NldGRhc2Eoc3RydWN0IGkzY19kZXZpY2UgKmRldilcbmRyaXZlcnMvaTNjL2RldmljZS5jLTcyLXtcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03NC1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjc1Olx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTc4LVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Nzk6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6ODA6XHRyZXQgPSBpM2NfZGV2X3NldGRhc2FfbG9ja2VkKGRldi1cdTAwM2VkZXNjKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjgxOlx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtODItXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo4MzpcdGkzY19idXNfcnBtX3B1dChkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg0LVxuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTg2LX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjg3OkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfZG9fc2V0ZGFzYSk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy04OC1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTg5LS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6OTA6ICogaTNjX2RldmljZV9nZXRfaW5mbygpIC0gZ2V0IEkzQyBkZXZpY2UgaW5mb3JtYXRpb25cbmRyaXZlcnMvaTNjL2RldmljZS5jLTkxLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtOTYtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo5Nzp2b2lkIGkzY19kZXZpY2VfZ2V0X2luZm8oY29uc3Qgc3RydWN0IGkzY19kZXZpY2UgKmRldixcbmRyaXZlcnMvaTNjL2RldmljZS5jOjk4Olx0XHRcdCBzdHJ1Y3QgaTNjX2RldmljZV9pbmZvICppbmZvKVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtOTkte1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwMi1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEwMzpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMDQtXHRpZiAoZGV2LVx1MDAzZWRlc2MpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMDUtXHRcdCppbmZvID0gZGV2LVx1MDAzZWRlc2MtXHUwMDNlaW5mbztcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEwNjpcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwNy19XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMDg6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9nZXRfaW5mbyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMDktXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMTAtLyoqXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMTE6ICogaTNjX2RldmljZV9kaXNhYmxlX2liaSgpIC0gRGlzYWJsZSBJQklzIGNvbWluZyBmcm9tIGEgc3BlY2lmaWMgZGV2aWNlXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMTItICogQGRldjogZGV2aWNlIG9uIHdoaWNoIElCSXMgc2hvdWxkIGJlIGRpc2FibGVkXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTE4LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTE5OmludCBpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjAte1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTEyMi1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEyMzpcdGlmIChpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChkZXYtXHUwMDNlYnVzKSkge1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI0Olx0XHRyZXQgPSBpM2NfYnVzX3JwbV9nZXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjUtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTI4LVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI5Olx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzMC1cdGlmIChkZXYtXHUwMDNlZGVzYykge1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTMxLVx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzMjpcdFx0cmV0ID0gaTNjX2Rldl9kaXNhYmxlX2liaV9sb2NrZWQoZGV2LVx1MDAzZWRlc2MpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTMzLVx0XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzNi1cdH1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzNzpcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzOC1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzOTpcdGlmICghcmV0IHx8IGkzY19idXNfcnBtX2liaV9hbGxvd2VkKGRldi1cdTAwM2VidXMpKVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTQwOlx0XHRpM2NfYnVzX3JwbV9wdXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDEtXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTQzLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE0NS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTE0Ni0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NzogKiBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoKSAtIEVuYWJsZSBJQklzIGNvbWluZyBmcm9tIGEgc3BlY2lmaWMgZGV2aWNlXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDgtICogQGRldjogZGV2aWNlIG9uIHdoaWNoIElCSXMgc2hvdWxkIGJlIGVuYWJsZWRcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNTEtICogYWxsIHBlbmRpbmcgSUJJcyB0byBiZSBwcm9jZXNzZWQuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIGRldmljZVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTUyOiAqIHdoZXJlIGkzY19kZXZpY2VfcmVxdWVzdF9pYmkoKSBoYXMgc3VjY2VlZGVkLlxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTUzLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTU4LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTU5OmludCBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoc3RydWN0IGkzY19kZXZpY2UgKmRldilcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE2MC17XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTYyLVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTYzOlx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNjc6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY4LVx0aWYgKGRldi1cdTAwM2VkZXNjKSB7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjktXHRcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTcwOlx0XHRyZXQgPSBpM2NfZGV2X2VuYWJsZV9pYmlfbG9ja2VkKGRldi1cdTAwM2VkZXNjKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE3MS1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzQtXHR9XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNzU6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNzc6XHRpZiAocmV0IHx8IGkzY19idXNfcnBtX2liaV9hbGxvd2VkKGRldi1cdTAwM2VidXMpKVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTc4Olx0XHRpM2NfYnVzX3JwbV9wdXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzktXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTgxLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjE4MjpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2VuYWJsZV9pYmkpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTgzLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTg0LS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTg1OiAqIGkzY19kZXZpY2VfcmVxdWVzdF9pYmkoKSAtIFJlcXVlc3QgYW4gSUJJXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xODYtICogQGRldjogZGV2aWNlIGZvciB3aGljaCB3ZSBzaG91bGQgZW5hYmxlIElCSXNcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xOTAtICogcHJvY2VzcyBJQklzIGNvbWluZyBmcm9tIEBkZXYuIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLCB0aGUgSUJJIGlzIG5vdFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTkxOiAqIGVuYWJsZWQgdW50aWwgaTNjX2RldmljZV9lbmFibGVfaWJpKCkgaXMgY2FsbGVkLlxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTkyLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTk0LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTk1OmludCBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxOTY6XHRcdFx0ICAgY29uc3Qgc3RydWN0IGkzY19pYmlfc2V0dXAgKnJlcSlcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE5Ny17XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjAyLVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjAzOlx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjA0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMDc6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjA4LVx0aWYgKGRldi1cdTAwM2VkZXNjKSB7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDktXHRcdG11dGV4X2xvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjEwOlx0XHRyZXQgPSBpM2NfZGV2X3JlcXVlc3RfaWJpX2xvY2tlZChkZXYtXHUwMDNlZGVzYywgcmVxKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIxMS1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTQtXHR9XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMTU6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTYtXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMTc6XHRpM2NfYnVzX3JwbV9wdXQoZGV2LVx1MDAzZWJ1cyk7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTgtXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjIwLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyMTpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMi1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMy0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyNDogKiBpM2NfZGV2aWNlX2ZyZWVfaWJpKCkgLSBGcmVlIGFsbCByZXNvdXJjZXMgbmVlZGVkIGZvciBJQkkgaGFuZGxpbmdcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyNS0gKiBAZGV2OiBkZXZpY2Ugb24gd2hpY2ggeW91IHdhbnQgdG8gcmVsZWFzZSBJQkkgcmVzb3VyY2VzXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjI3LSAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGRlLWFsbG9jYXRpbmcgcmVzb3VyY2VzIHByZXZpb3VzbHlcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyODogKiBhbGxvY2F0ZWQgYnkgaTNjX2RldmljZV9yZXF1ZXN0X2liaSgpLiBJdCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGRpc2FibGluZ1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjI5OiAqIElCSXMgd2l0aCBpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKCkuXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMzAtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzE6dm9pZCBpM2NfZGV2aWNlX2ZyZWVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMzIte1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjMzOlx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXHUwMDNlYnVzKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIzNC1cdGlmIChkZXYtXHUwMDNlZGVzYykge1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM1LVx0XHRtdXRleF9sb2NrKFx1MDAyNmRldi1cdTAwM2VkZXNjLVx1MDAzZWliaV9sb2NrKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIzNjpcdFx0aTNjX2Rldl9mcmVlX2liaV9sb2NrZWQoZGV2LVx1MDAzZWRlc2MpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM3LVx0XHRtdXRleF91bmxvY2soXHUwMDI2ZGV2LVx1MDAzZWRlc2MtXHUwMDNlaWJpX2xvY2spO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM4LVx0fVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjM5Olx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cdTAwM2VidXMpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjQwLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0MTpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2ZyZWVfaWJpKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0Mi1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0My0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0NDogKiBpM2NkZXZfdG9fZGV2KCkgLSBSZXR1cm5zIHRoZSBkZXZpY2UgZW1iZWRkZWQgaW4gQGkzY2RldlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjQ1OiAqIEBpM2NkZXY6IEkzQyBkZXZpY2VcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0Ni0gKlxuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTI0OC0gKi9cbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0OTpzdHJ1Y3QgZGV2aWNlICppM2NkZXZfdG9fZGV2KHN0cnVjdCBpM2NfZGV2aWNlICppM2NkZXYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTAte1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjUxOlx0cmV0dXJuIFx1MDAyNmkzY2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTItfVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGkzY2Rldl90b19kZXYpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjU0LVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjU1LS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjU2OiAqIGkzY19kZXZpY2VfbWF0Y2hfaWQoKSAtIFJldHVybnMgdGhlIGkzY19kZXZpY2VfaWQgZW50cnkgbWF0Y2hpbmcgQGkzY2RldlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjU3OiAqIEBpM2NkZXY6IEkzQyBkZXZpY2VcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1OC0gKiBAaWRfdGFibGU6IEkzQyBkZXZpY2UgbWF0Y2ggdGFibGVcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1OS0gKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjYwOiAqIFJldHVybjogYSBwb2ludGVyIHRvIGFuIGkzY19kZXZpY2VfaWQgb2JqZWN0IG9yIE5VTEwgaWYgdGhlcmUmIzM5O3Mgbm8gbWF0Y2guXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjEtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjI6Y29uc3Qgc3RydWN0IGkzY19kZXZpY2VfaWQgKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjYzOmkzY19kZXZpY2VfbWF0Y2hfaWQoc3RydWN0IGkzY19kZXZpY2UgKmkzY2RldixcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2NDpcdFx0ICAgIGNvbnN0IHN0cnVjdCBpM2NfZGV2aWNlX2lkICppZF90YWJsZSlcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI2NS17XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjY6XHRzdHJ1Y3QgaTNjX2RldmljZV9pbmZvIGRldmluZm87XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjc6XHRjb25zdCBzdHJ1Y3QgaTNjX2RldmljZV9pZCAqaWQ7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjgtXHR1MTYgbWFudWYsIHBhcnQsIGV4dF9pbmZvO1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTI3MC1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjI3MTpcdGkzY19kZXZpY2VfZ2V0X2luZm8oaTNjZGV2LCBcdTAwMjZkZXZpbmZvKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI3Mi1cbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yOTktfVxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzAwOkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfbWF0Y2hfaWQpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzAxLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzAyLS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzAzOiAqIGkzY19kZXZpY2VfZ2V0X3N1cHBvcnRlZF94ZmVyX21vZGUgLSBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgdHJhbnNmZXIgbW9kZSBieVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzA0LSAqXHRcdFx0XHRcdGNvbm5lY3RlZCBtYXN0ZXIgY29udHJvbGxlci5cbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDctICogUmV0dXJuOiBhIGJpdCBtYXNrLCB3aGljaCBzdXBwb3J0ZWQgdHJhbnNmZXIgbW9kZSwgYml0IHBvc2l0aW9uIGlzIGRlZmluZWQgYXRcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMwODogKlx0ICAgZW51bSBpM2NfaGRyX21vZGVcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMwOS0gKi9cbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxMDp1MzIgaTNjX2RldmljZV9nZXRfc3VwcG9ydGVkX3hmZXJfbW9kZShzdHJ1Y3QgaTNjX2RldmljZSAqZGV2KVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzExLXtcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxMjpcdHJldHVybiBpM2NfZGV2X2dldF9tYXN0ZXIoZGV2LVx1MDAzZWRlc2MpLVx1MDAzZXRoaXMtXHUwMDNlaW5mby5oZHJfY2FwIHwgQklUKEkzQ19TRFIpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzEzLX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2dldF9zdXBwb3J0ZWRfeGZlcl9tb2RlKTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMxNS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTMxNi0vKipcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNzogKiBpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIoKSAtIHJlZ2lzdGVyIGFuIEkzQyBkZXZpY2UgZHJpdmVyXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTgtICpcbi0tXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjUtICovXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMjY6aW50IGkzY19kcml2ZXJfcmVnaXN0ZXJfd2l0aF9vd25lcihzdHJ1Y3QgaTNjX2RyaXZlciAqZHJ2LCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMyNy17XG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjgtXHRkcnYtXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMjk6XHRkcnYtXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNmkzY19idXNfdHlwZTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMC1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMS1cdGlmICghZHJ2LVx1MDAzZXByb2JlKSB7XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMzI6XHRcdHByX2VycihcJiMzNDtUcnlpbmcgdG8gcmVnaXN0ZXIgYW4gaTNjIGRyaXZlciB3aXRob3V0IHByb2JlIGNhbGxiYWNrXFxuXCYjMzQ7KTtcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMy1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzM3LX1cbmRyaXZlcnMvaTNjL2RldmljZS5jOjMzODpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIpO1xuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzM5LVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQwLS8qKlxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzQxOiAqIGkzY19kcml2ZXJfdW5yZWdpc3RlcigpIC0gdW5yZWdpc3RlciBhbiBJM0MgZGV2aWNlIGRyaXZlclxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQyLSAqXG4tLVxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQ2LSAqL1xuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzQ3OnZvaWQgaTNjX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpM2NfZHJpdmVyICpkcnYpXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zNDgte1xuLS1cbmRyaXZlcnMvaTNjL2RldmljZS5jLTM1MC19XG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozNTE6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RyaXZlcl91bnJlZ2lzdGVyKTtcbi0tXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0xMC1cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjExOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2kzYy9tYXN0ZXIuaFx1MDAzZVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMTItI2luY2x1ZGUgXHUwMDNjbGludXgvaW8uaFx1MDAzZVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMTMtXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoxNDppbnQgX19tdXN0X2NoZWNrIGkzY19idXNfcnBtX2dldChzdHJ1Y3QgaTNjX2J1cyAqYnVzKTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE1OnZvaWQgaTNjX2J1c19ycG1fcHV0KHN0cnVjdCBpM2NfYnVzICpidXMpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTY6Ym9vbCBpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChzdHJ1Y3QgaTNjX2J1cyAqYnVzKTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTE3LVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTg6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTk6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soc3RydWN0IGkzY19idXMgKmJ1cyk7XG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0yMC1cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjIxOmludCBpM2NfZGV2X3NldGRhc2FfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyMjppbnQgaTNjX2Rldl9kb194ZmVyc19sb2NrZWQoc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2LFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MjM6XHRcdFx0ICAgIHN0cnVjdCBpM2NfeGZlciAqeGZlcnMsXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyNDpcdFx0XHQgICAgaW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MjU6aW50IGkzY19kZXZfZGlzYWJsZV9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyNjppbnQgaTNjX2Rldl9lbmFibGVfaWJpX2xvY2tlZChzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXYpO1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6Mjc6aW50IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldixcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI4Olx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgaTNjX2liaV9zZXR1cCAqcmVxKTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI5OnZvaWQgaTNjX2Rldl9mcmVlX2liaV9sb2NrZWQoc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2KTtcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTMwLVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMzEtLyoqXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDozMjogKiBpM2Nfd3JpdGVsX2ZpZm8gLSBXcml0ZSBkYXRhIGJ1ZmZlciB0byAzMmJpdCBGSUZPXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0zMy0gKiBAYWRkcjogRklGTyBBZGRyZXNzIHRvIHdyaXRlIHRvXG4tLVxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMzYtICovXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDozNzpzdGF0aWMgaW5saW5lIHZvaWQgaTNjX3dyaXRlbF9maWZvKHZvaWQgX19pb21lbSAqYWRkciwgY29uc3Qgdm9pZCAqYnVmLFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMzgtXHRcdFx0XHQgICBpbnQgbmJ5dGVzKVxuLS1cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTUzLS8qKlxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6NTQ6ICogaTNjX3JlYWRsX2ZpZm8gLSBSZWFkIGRhdGEgYnVmZmVyIGZyb20gMzJiaXQgRklGT1xuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtNTUtICogQGFkZHI6IEZJRk8gQWRkcmVzcyB0byByZWFkIGZyb21cbi0tXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC01OC0gKi9cbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjU5OnN0YXRpYyBpbmxpbmUgdm9pZCBpM2NfcmVhZGxfZmlmbyhjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmJ1ZixcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTYwLVx0XHRcdFx0ICBpbnQgbmJ5dGVzKVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI1LVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjY6c3RhdGljIERFRklORV9JRFIoaTNjX2J1c19pZHIpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjc6c3RhdGljIERFRklORV9NVVRFWChpM2NfY29yZV9sb2NrKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI4OnN0YXRpYyBpbnQgX19pM2NfZmlyc3RfZHluYW1pY19idXNfbnVtO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjk6c3RhdGljIEJMT0NLSU5HX05PVElGSUVSX0hFQUQoaTNjX2J1c19ub3RpZmllcik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0zMC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTMxLS8qKlxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MzI6ICogaTNjX2J1c19tYWludGVuYW5jZV9sb2NrIC0gTG9jayB0aGUgYnVzIGZvciBhIG1haW50ZW5hbmNlIG9wZXJhdGlvblxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMzMtICogQGJ1czogSTNDIGJ1cyB0byB0YWtlIHRoZSBsb2NrIG9uXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNDYtICovXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo0NzpzdGF0aWMgdm9pZCBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cylcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTQ4LXtcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01Mi0vKipcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjUzOiAqIGkzY19idXNfbWFpbnRlbmFuY2VfdW5sb2NrIC0gUmVsZWFzZSB0aGUgYnVzIGxvY2sgYWZ0ZXIgYSBtYWludGVuYW5jZVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNTQtICpcdFx0XHQgICAgICBvcGVyYXRpb25cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01Ny0gKiBTaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1cyBtYWludGVuYW5jZSBvcGVyYXRpb24gaXMgZG9uZS4gU2VlXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo1ODogKiBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soKSBmb3IgbW9yZSBkZXRhaWxzIG9uIHdoYXQgdGhlc2UgbWFpbnRlbmFuY2VcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTU5LSAqIG9wZXJhdGlvbnMgYXJlLlxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjAtICovXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo2MTpzdGF0aWMgdm9pZCBpM2NfYnVzX21haW50ZW5hbmNlX3VubG9jayhzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjIte1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTY2LS8qKlxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Njc6ICogaTNjX2J1c19ub3JtYWx1c2VfbG9jayAtIExvY2sgdGhlIGJ1cyBmb3IgYSBub3JtYWwgb3BlcmF0aW9uXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy02OC0gKiBAYnVzOiBJM0MgYnVzIHRvIHRha2UgdGhlIGxvY2sgb25cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy03MC0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBidXMgbG9jayBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IGlzIG5vdCBhIG1haW50ZW5hbmNlXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo3MTogKiBvcGVyYXRpb24gKHNlZSBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soKSBmb3IgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy03Mi0gKiBtYWludGVuYW5jZSBvcGVyYXRpb25zKS4gQmFzaWNhbGx5IGFsbCBjb21tdW5pY2F0aW9ucyB3aXRoIEkzQyBkZXZpY2VzIGFyZVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTgxLSAqL1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6ODI6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04My17XG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtODctLyoqXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo4ODogKiBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2sgLSBSZWxlYXNlIHRoZSBidXMgbG9jayBhZnRlciBhIG5vcm1hbCBvcGVyYXRpb25cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTg5LSAqIEBidXM6IEkzQyBidXMgdG8gcmVsZWFzZSB0aGUgbG9jayBvblxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTkxLSAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIG5vcm1hbCBvcGVyYXRpb24gaXMgZG9uZS4gU2VlXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo5MjogKiBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKCkgZm9yIG1vcmUgZGV0YWlscyBvbiB3aGF0IHRoZXNlIG5vcm1hbCBvcGVyYXRpb25zXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05My0gKiBhcmUuXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05NC0gKi9cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjk1OnZvaWQgaTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05Ni17XG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtOTktXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMDA6c3RhdGljIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKlxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTAxOmkzY19idXNfdG9faTNjX21hc3RlcihzdHJ1Y3QgaTNjX2J1cyAqaTNjYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTAyLXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwMzpcdHJldHVybiBjb250YWluZXJfb2YoaTNjYnVzLCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyLCBidXMpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA0LX1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEwNS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwNjpzdGF0aWMgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqZGV2X3RvX2kzY21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMDcte1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTA4Olx0cmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIsIGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMDktfVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTEwLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTExOnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGkzY19tYXN0ZXJfcnBtX2dldChzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMTIte1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEyMS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEyMjpzdGF0aWMgdm9pZCBpM2NfbWFzdGVyX3JwbV9wdXQoc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTIzLXtcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMjctXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMjg6aW50IGkzY19idXNfcnBtX2dldChzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTI5LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEzMDpcdHJldHVybiBpM2NfbWFzdGVyX3JwbV9nZXQoaTNjX2J1c190b19pM2NfbWFzdGVyKGJ1cykpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTMxLX1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzMi1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEzMzp2b2lkIGkzY19idXNfcnBtX3B1dChzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTM0LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEzNTpcdGkzY19tYXN0ZXJfcnBtX3B1dChpM2NfYnVzX3RvX2kzY19tYXN0ZXIoYnVzKSk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMzYtfVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTM3LVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTM4OmJvb2wgaTNjX2J1c19ycG1faWJpX2FsbG93ZWQoc3RydWN0IGkzY19idXMgKmJ1cylcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzOS17XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNDA6XHRyZXR1cm4gaTNjX2J1c190b19pM2NfbWFzdGVyKGJ1cyktXHUwMDNlcnBtX2liaV9hbGxvd2VkO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQxLX1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0Mi1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIGkzY19kZXZpY2VfdHlwZTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0NC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0NTpzdGF0aWMgc3RydWN0IGkzY19idXMgKmRldl90b19pM2NidXMoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQ2LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0NzpcdHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcjtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0OC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0OTpcdGlmIChkZXYtXHUwMDNldHlwZSA9PSBcdTAwMjZpM2NfZGV2aWNlX3R5cGUpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNTA6XHRcdHJldHVybiBkZXZfdG9faTNjZGV2KGRldiktXHUwMDNlYnVzO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUxLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTUyOlx0bWFzdGVyID0gZGV2X3RvX2kzY21hc3RlcihkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUzLVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE1Ni1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1NzpzdGF0aWMgc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2X3RvX2kzY2Rlc2Moc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTU4LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1OTpcdHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcjtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE2MC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE2MTpcdGlmIChkZXYtXHUwMDNldHlwZSA9PSBcdTAwMjZpM2NfZGV2aWNlX3R5cGUpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNjI6XHRcdHJldHVybiBkZXZfdG9faTNjZGV2KGRldiktXHUwMDNlZGVzYztcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE2My1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE2NDpcdG1hc3RlciA9IGRldl90b19pM2NtYXN0ZXIoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE2NS1cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0xNjk9c3RhdGljIHNzaXplX3QgYmNyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE3Mi17XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNzM6XHRzdHJ1Y3QgaTNjX2J1cyAqYnVzID0gZGV2X3RvX2kzY2J1cyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc0Olx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE3NS1cdHNzaXplX3QgcmV0O1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTc2LVxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc3Olx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhidXMpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc4Olx0ZGVzYyA9IGRldl90b19pM2NkZXNjKGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNzktXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7MHglMDJ4XFxuXCYjMzQ7LCBkZXNjLVx1MDAzZWluZm8uYmNyKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE4MDpcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhidXMpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTgxLVxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jPTE4Nj1zdGF0aWMgc3NpemVfdCBkY3Jfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTg5LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE5MDpcdHN0cnVjdCBpM2NfYnVzICpidXMgPSBkZXZfdG9faTNjYnVzKGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTE6XHRzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXNjO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTkyLVx0c3NpemVfdCByZXQ7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTMtXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTQ6XHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTU6XHRkZXNjID0gZGV2X3RvX2kzY2Rlc2MoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE5Ni1cdHJldCA9IHN5c2ZzX2VtaXQoYnVmLCBcJiMzNDsweCUwMnhcXG5cJiMzNDssIGRlc2MtXHUwMDNlaW5mby5kY3IpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTk3Olx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTgtXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjAzPXN0YXRpYyBzc2l6ZV90IHBpZF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMDYte1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjA3Olx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIwODpcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMDktXHRzc2l6ZV90IHJldDtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIxMC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIxMTpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIxMjpcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjEzLVx0cmV0ID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVsbHhcXG5cJiMzNDssIGRlc2MtXHUwMDNlaW5mby5waWQpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjE0Olx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMTUtXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjIwPXN0YXRpYyBzc2l6ZV90IGR5bmFtaWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMjMte1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjI0Olx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyNTpcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMjYtXHRzc2l6ZV90IHJldDtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIyNy1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyODpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyOTpcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjMwLVx0cmV0ID0gc3lzZnNfZW1pdChidWYsIFwmIzM0OyUwMnhcXG5cJiMzNDssIGRlc2MtXHUwMDNlaW5mby5keW5fYWRkcik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMzE6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIzMi1cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0yNDE9c3RhdGljIHNzaXplX3QgaGRyY2FwX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI0NC17XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNDU6XHRzdHJ1Y3QgaTNjX2J1cyAqYnVzID0gZGV2X3RvX2kzY2J1cyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjQ2Olx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI0Ny1cdHNzaXplX3Qgb2Zmc2V0ID0gMCwgcmV0O1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI1MC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI1MTpcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI1MjpcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjUzLVx0Y2FwcyA9IGRlc2MtXHUwMDNlaW5mby5oZHJfY2FwO1xuLS1cbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI3NS1vdXQ6XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNzY6XHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI3Ny1cbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0yODI9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjg0LXtcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI4NTpcdHN0cnVjdCBpM2NfZGV2aWNlICppM2MgPSBkZXZfdG9faTNjZGV2KGRldik7XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODY6XHRzdHJ1Y3QgaTNjX2RldmljZV9pbmZvIGRldmluZm87XG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yODctXHR1MTYgbWFudWYsIHBhcnQsIGV4dDtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI4OC1cbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI4OTpcdGkzY19kZXZpY2VfZ2V0X2luZm8oaTNjLCBcdTAwMjZkZXZpbmZvKTtcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI5MC1cdG1hbnVmID0gSTNDX1BJRF9NQU5VRl9JRChkZXZpbmZvLnBpZCk7XG4tLVxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjk0LVx0aWYgKEkzQ19QSURfUk5EX0xPV0VSXzMyQklUUyhkZXZpbmZvLnBpZCkpXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyOTU6XHRcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCYjMzQ7aTNjOmRjciUwMlhtYW51ZiUwNFhcXG5cJiMzNDssIGRldmluZm8uZGNyLFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjk2LVx0XHRcdCAgICAgICBtYW51Zik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTAwMgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTUNUUCBvdmVyIEkzQyBEcml2ZXIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIE1DVFAgSTNDIGRyaXZlci4gSXQmIzM5O3MgZGVzaWduZWQgZm9yIGhhbmRsaW5nIE1DVFAgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIEkzQyBpbnRlcmZhY2UsIG1ha2VzIHNlbnNlLiBCdXQsIHRoZSBxdWVzdGlvbiBJJiMzOTt2ZSBnb3QgcmlnaHQgbm93IGlzLCBkb2VzIHRoZSBrZXJuZWwgaW5jbHVkZSBhbiBJM0MgZW11bGF0b3I/IE9yIHBlcmhhcHMgZXZlbiBhIHNpbXBsZSBkdW1teSBkcml2ZXIgZm9yIHRlc3RpbmcgcHVycG9zZXM/IEl0JiMzOTtkIGJlIGh1Z2VseSBoZWxwZnVsIHRvIGhhdmUgc29tZXRoaW5nIGxpa2UgdGhhdCBhdmFpbGFibGUsIGV2ZW4gaWYgaXQmIzM5O3MganVzdCBhIGJhc2ljIGltcGxlbWVudGF0aW9uLiBMZXQgbWUgZGlnIGFyb3VuZCBhbmQgc2VlIGlmIEkgY2FuIGxvY2F0ZSBzb21ldGhpbmcsIGEgJiMzNDtwbGFjZWhvbGRlciYjMzQ7IGRyaXZlciBvciBzaW1pbGFyLiBBbnl0aGluZyB0aGF0IGNhbiBzaW11bGF0ZSB0aGUgSTNDIGJ1cyBmb3IgZGV2ZWxvcG1lbnQgYW5kIHRlc3Rpbmcgd291bGQgYmUgaWRlYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTE6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHVtbXkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2kzYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmM9MTEzMz1zdGF0aWMgaXJxcmV0dXJuX3QgcmVuZXNhc19pM2NfdGVuZF9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYy0xMTQ1LVx0XHRcdFx0LyogV2UgZ290IGEgTkFDS0lFICovXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYzoxMTQ2Olx0XHRcdFx0cmVuZXNhc19yZWFkbChpM2MtXHUwMDNlcmVncywgTlREVEJQMCk7IC8qIGR1bW15IHJlYWQgKi9cbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jLTExNDctXHRcdFx0XHRyZW5lc2FzX2NsZWFyX2JpdChpM2MtXHUwMDNlcmVncywgQlNULCBCU1RfTkFDS0RGKTtcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYz0xMTc0PXN0YXRpYyBpcnFyZXR1cm5fdCByZW5lc2FzX2kzY19yeF9pc3IoaW50IGlycSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYy0xMTk1LVx0XHRcdFx0cmVuZXNhc19zZXRfYml0KGkzYy1cdTAwM2VyZWdzLCBTQ1NUUkNUTCwgU0NTVFJDVExfUldFKTtcbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jOjExOTY6XHRcdFx0XHRyZW5lc2FzX3JlYWRsKGkzYy1cdTAwM2VyZWdzLCBOVERUQlAwKTsgLyogZHVtbXkgcmVhZCAqL1xuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmMtMTE5Ny1cdFx0XHRcdGlmIChjbWQtXHUwMDNlaTJjX2J5dGVzX2xlZnQgPT0gMSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU4OAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkkzQyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHByb2JsZW0sIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBJM0MgZHVtbXkgZHJpdmVyIGtpY2tpbmcgYXJvdW5kLiBUaGF0JiMzOTtzIGEgYml0IG9kZDsgdXN1YWxseSwgdGhlcmUmIzM5O3MgYXQgbGVhc3QgYSBwbGFjZWhvbGRlciBvciBza2VsZXRvbi4gSG1tLCB3YWl0IGEgc2Vjb25kLi4ubWF5YmUgaXQmIzM5O3Mgbm90IGEgJiMzNDtkdW1teSYjMzQ7IHBlciBzZSwgYnV0IHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgbGlrZSBhIG1vY2sgaW1wbGVtZW50YXRpb24/IEl0JiMzOTtzIHBvc3NpYmxlIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIHdyb25nIHRlcm1pbm9sb2d5LiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyB3b3VsZCBiZSBpbiB0aGUgYGRyaXZlcnMvaTNjL21hc3Rlci9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIGNvcmUgSTNDIG1hc3RlciBkZXZpY2UgZHJpdmVyIGZpbGVzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBtb2NrZWQgdmVyc2lvbiBvciBwbGFjZWhvbGRlciB0aGF0IEkgY2FuIGxvb2sgYXQgZm9yIGEgYmFzZWxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvaTNjL21hc3Rlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthZGktaTNjLW1hc3Rlci5jJiMzNDssCiAgICAmIzM0O2FzdDI2MDAtaTNjLW1hc3Rlci5jJiMzNDssCiAgICAmIzM0O2R3LWkzYy1tYXN0ZXIuYyYjMzQ7LAogICAgJiMzNDtkdy1pM2MtbWFzdGVyLmgmIzM0OywKICAgICYjMzQ7aTNjLW1hc3Rlci1jZG5zLmMmIzM0OywKICAgICYjMzQ7cmVuZXNhcy1pM2MuYyYjMzQ7LAogICAgJiMzNDtzdmMtaTNjLW1hc3Rlci5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O21pcGktaTNjLWhjaSYjMzQ7CiAgXQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDExOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1OTMyCgkJCQkJCQlvdXRwdXQ6IDE2OAoJCQkJCQkJdGhvdWdodHM6IDU4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJM0MgRHJpdmVyIFBhdGNoIEFuYWx5c2lzOiBOb3QgRnV6emFibGUqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgSTNDIGRyaXZlciBzaXR1YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBwcmV0dHkgbGltaXRlZCBzZXQgb2YgaGFyZHdhcmUgZHJpdmVyczogYGFkaS1pM2MtbWFzdGVyLmNgLCBgYXN0MjYwMC1pM2MtbWFzdGVyLmNgLCBgZHctaTNjLW1hc3Rlci5jYCwgYW5kIHNvIG9uLCBhbG9uZyB3aXRoIGBtaXBpLWkzYy1oY2lgLiBUaGUgY3J1Y2lhbCBwb2ludCBpcywgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0b3IgZm9yIEkzQyB3aXRoaW4gdGhpcyBrZXJuZWwuIFRoaXMgaW1tZWRpYXRlbHkgcHJlc2VudHMgYSBodXJkbGUgZm9yIGZ1enppbmcgYmVjYXVzZSBJIGNhbiYjMzk7dCBlYXNpbHkgdGVzdCB0aGVzZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IGFuIGVtdWxhdGVkIEkzQyBjb250cm9sbGVyLgoKSSBzdGFydGVkIHdvbmRlcmluZyBpZiBRRU1VIGVtdWxhdGVzIGFueSBvZiB0aGVzZSBoYXJkd2FyZSBjb250cm9sbGVycy4gUGVyaGFwcyB0aGUgYGFzdDI2MDAtaTNjLW1hc3Rlci5jYCBmb3IgQXNwZWVkIEFTVDI2MDAgbWlnaHQgYmUgZW11bGF0ZWQ/IFFFTVUgKmRvZXMqIGVtdWxhdGUgQVNUMjYwMCwgYnV0IHRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGl0IHNwZWNpZmljYWxseSBlbXVsYXRlcyB0aGUgSTNDIGNvbnRyb2xsZXIgd2l0aGluIHRoYXQgZW11bGF0aW9uLgoKTGV0IG1lIGdvIGJhY2sgYW5kIGxvb2sgYXQgdGhlIHBhdGNoIG1vcmUgY2xvc2VseS4gSXQmIzM5O3MgYWN0dWFsbHkgYSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBmaXguIEl0JiMzOTtzIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aCwgc3BlY2lmaWNhbGx5IGNsZWFuaW5nIHVwIHJlc291cmNlcyBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkaW5nIGBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBtY3RwX2kzY19idXNfcmVtb3ZlX2FsbGAgY2FsbHMuIFRoaXMgY2hhbmdlIGlzbiYjMzk7dCBpbnRyb2R1Y2luZyBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcy4KCkdpdmVuIGFsbCBvZiB0aGlzLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgcGF0Y2ggaXMgbm90IHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgY2xlYW51cCwgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhbmQgZGlmZmljdWx0IHRvIHRyaWdnZXIuIFRoZXJlJiMzOTtzIG5vdGhpbmcgbmV3IHRvIGZ1enosIHNvIEkgd2lsbCByZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxMTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKGBtY3RwX2kzY19tb2RfaW5pdGApLiBJdCBhZGRzIGNsZWFudXAgY2FsbHMgKGBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBtY3RwX2kzY19idXNfcmVtb3ZlX2FsbGApIGlmIGBpM2NfZHJpdmVyX3JlZ2lzdGVyYCBmYWlscy4gTW9kdWxlIGluaXRpYWxpemF0aW9uIGVycm9yIHBhdGhzIGFyZSBnZW5lcmFsbHkgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhcmUgZGlmZmljdWx0IHRvIHRyaWdnZXIgd2l0aG91dCBzcGVjaWZpYyBmYXVsdCBpbmplY3Rpb24sIGFuZCB0aGlzIHNwZWNpZmljIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBvciBjb21wbGV4IHN0YXRlIG1hY2hpbmVzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuIEZ1cnRoZXJtb3JlLCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBJM0MgY29udHJvbGxlciBpbiB0aGUga2VybmVsIHRvIGVhc2lseSB0ZXN0IHRoaXMgYnVzIHN1YnN5c3RlbSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzc6NDEuMTc0MjYwNTc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE3MzEzMjgwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgZml4ZXMgYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIChgbWN0cF9pM2NfbW9kX2luaXRgKS4gSXQgYWRkcyBjbGVhbnVwIGNhbGxzIChgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgKSBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcmAgZmFpbHMuIE1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRocyBhcmUgZ2VuZXJhbGx5IGV4ZWN1dGVkIGF0IG1vc3Qgb25jZSwgYXJlIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHdpdGhvdXQgc3BlY2lmaWMgZmF1bHQgaW5qZWN0aW9uLCBhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgcmVhY2hhYmxlIGNvcmUgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBmdXp6aW5nLiBGdXJ0aGVybW9yZSwgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgSTNDIGNvbnRyb2xsZXIgaW4gdGhlIGtlcm5lbCB0byBlYXNpbHkgdGVzdCB0aGlzIGJ1cyBzdWJzeXN0ZW0gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzc6NDEuMTc0MjY1NTg4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzQ5NTUyNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkN2E3MGVlMGQ2OTFlOTk2MmUwNzMzZDdmNTk3Y2ZkNGY5NWE1ZjBhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDE0IDExOjM3OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuYyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY1xcbmluZGV4IDZkMmJiYWU3NDc3YjM5Li42NzdlNzdlOTE3YjY2NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcXG5AQCAtNzQwLDkgKzc0MCwxNCBAQCBzdGF0aWMgX19pbml0IGludCBtY3RwX2kzY19tb2RfaW5pdCh2b2lkKVxcbiBcXG4gXFx0cmMgPSBpM2NfZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xcbiBcXHRpZiAocmMgXFx1MDAzYyAwKVxcbi1cXHRcXHRyZXR1cm4gcmM7XFxuK1xcdFxcdGdvdG8gZXJyX3VucmVnaXN0ZXJfbm90aWZpZXI7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK2Vycl91bnJlZ2lzdGVyX25vdGlmaWVyOlxcbitcXHRpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbitcXHRtY3RwX2kzY19idXNfcmVtb3ZlX2FsbCgpO1xcbitcXHRyZXR1cm4gcmM7XFxuIH1cXG4gXFxuIHN0YXRpYyBfX2V4aXQgdm9pZCBtY3RwX2kzY19tb2RfZXhpdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMTozNzo0MS41NDk4MDI1OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMzU1NzgwODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiAoYG1jdHBfaTNjX21vZF9pbml0YCkuIEl0IGFkZHMgY2xlYW51cCBjYWxscyAoYGkzY191bnJlZ2lzdGVyX25vdGlmaWVyYCBhbmQgYG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsYCkgaWYgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGZhaWxzLiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aHMgYXJlIGdlbmVyYWxseSBleGVjdXRlZCBhdCBtb3N0IG9uY2UsIGFyZSBkaWZmaWN1bHQgdG8gdHJpZ2dlciB3aXRob3V0IHNwZWNpZmljIGZhdWx0IGluamVjdGlvbiwgYW5kIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgbWFjaGluZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4gRnVydGhlcm1vcmUsIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIEkzQyBjb250cm9sbGVyIGluIHRoZSBrZXJuZWwgdG8gZWFzaWx5IHRlc3QgdGhpcyBidXMgc3Vic3lzdGVtIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDdhNzBlZTBkNjkxZTk5NjJlMDczM2Q3ZjU5N2NmZDRmOTVhNWYwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDExOjM3OjQwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jIGIvZHJpdmVycy9uZXQvbWN0cC9tY3RwLWkzYy5jXG5pbmRleCA2ZDJiYmFlNzQ3N2IzOS4uNjc3ZTc3ZTkxN2I2NjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcbisrKyBiL2RyaXZlcnMvbmV0L21jdHAvbWN0cC1pM2MuY1xuQEAgLTc0MCw5ICs3NDAsMTQgQEAgc3RhdGljIF9faW5pdCBpbnQgbWN0cF9pM2NfbW9kX2luaXQodm9pZClcbiBcbiBcdHJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xuIFx0aWYgKHJjIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gcmM7XG4rXHRcdGdvdG8gZXJyX3VucmVnaXN0ZXJfbm90aWZpZXI7XG4gXG4gXHRyZXR1cm4gMDtcbitcbitlcnJfdW5yZWdpc3Rlcl9ub3RpZmllcjpcbitcdGkzY191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNm1jdHBfaTNjX25vdGlmaWVyKTtcbitcdG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsKCk7XG4rXHRyZXR1cm4gcmM7XG4gfVxuIFxuIHN0YXRpYyBfX2V4aXQgdm9pZCBtY3RwX2kzY19tb2RfZXhpdCh2b2lkKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzc6NDEuNTQ5ODAzOTIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ2MTg4MzU0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1DVFAtSTNDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNgLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGBtY3RwX2kzY19tb2RfaW5pdCgpYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlcmUgd2FzIGFuIGVycm9yIHBhdGggcmVsYXRlZCB0byB0aGUgYGkzY19kcml2ZXJfcmVnaXN0ZXIoKWAgZnVuY3Rpb24uIFByZXZpb3VzbHksIGlmIHRoYXQgcmVnaXN0cmF0aW9uIGZhaWxlZCwgdGhpbmdzIHdlcmVuJ3QgY2xlYW5lZCB1cCBjb3JyZWN0bHksIHdoaWNoIGNvdWxkIGxlYWQgdG8gcmVzb3VyY2UgbGVha3Mgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4gVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhhdC4gTm93LCBpZiBgaTNjX2RyaXZlcl9yZWdpc3RlcigpYCBmYWlscywgdGhlIG5vdGlmaWVyIGlzIHVucmVnaXN0ZXJlZCwgYW5kIGFsbCBidXNlcyBhcmUgcmVtb3ZlZCB0byBtYWludGFpbiBjb25zaXN0ZW5jeS4gTGV0IG1lIGRpdmUgaW50byB0aGF0IGBtY3RwX2kzY19tb2RfaW5pdGAgZnVuY3Rpb24gYW5kIHNlZSBob3cgdGhleSBpbXBsZW1lbnRlZCB0aGlzLiBJJ2xsIGNoZWNrIGhvdyB0aGV5IGVuc3VyZWQgdGhlIGludGVncml0eSBvZiByZXNvdXJjZXMgaWYgcmVnaXN0cmF0aW9uIGZhaWxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDExOjM3OjQ2LjAxMTY4OTEwMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjg3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tY3RwL21jdHAtaTNjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdFxcdC5yZW1vdmUgPSBtY3RwX2kzY19yZW1vdmUsXFxuIDcyNjpcXHRcXHQuaWRfdGFibGUgPSBtY3RwX2kzY19pZHMsXFxuIDcyNzpcXHR9O1xcbiA3Mjg6XFx0XFxuIDcyOTpcXHRzdGF0aWMgX19pbml0IGludCBtY3RwX2kzY19tb2RfaW5pdCh2b2lkKVxcbiA3MzA6XFx0e1xcbiA3MzE6XFx0XFx0aW50IHJjO1xcbiA3MzI6XFx0XFxuIDczMzpcXHRcXHRyYyA9IGkzY19yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbiA3MzQ6XFx0XFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbiA3MzU6XFx0XFx0XFx0aTNjX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZtY3RwX2kzY19kcml2ZXIpO1xcbiA3MzY6XFx0XFx0XFx0cmV0dXJuIHJjO1xcbiA3Mzc6XFx0XFx0fVxcbiA3Mzg6XFx0XFxuIDczOTpcXHRcXHRpM2NfZm9yX2VhY2hfYnVzX2xvY2tlZChtY3RwX2kzY19idXNfYWRkX25ldywgTlVMTCk7XFxuIDc0MDpcXHRcXG4gNzQxOlxcdFxcdHJjID0gaTNjX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2bWN0cF9pM2NfZHJpdmVyKTtcXG4gNzQyOlxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuIDc0MzpcXHRcXHRcXHRnb3RvIGVycl91bnJlZ2lzdGVyX25vdGlmaWVyO1xcbiA3NDQ6XFx0XFxuIDc0NTpcXHRcXHRyZXR1cm4gMDtcXG4gNzQ2OlxcdFxcbiA3NDc6XFx0ZXJyX3VucmVnaXN0ZXJfbm90aWZpZXI6XFxuIDc0ODpcXHRcXHRpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbiA3NDk6XFx0XFx0bWN0cF9pM2NfYnVzX3JlbW92ZV9hbGwoKTtcXG4gNzUwOlxcdFxcdHJldHVybiByYztcXG4gNzUxOlxcdH1cXG4gNzUyOlxcdFxcbiA3NTM6XFx0c3RhdGljIF9fZXhpdCB2b2lkIG1jdHBfaTNjX21vZF9leGl0KHZvaWQpXFxuIDc1NDpcXHR7XFxuIDc1NTpcXHRcXHRpbnQgcmM7XFxuIDc1NjpcXHRcXG4gNzU3OlxcdFxcdGkzY19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2bWN0cF9pM2NfZHJpdmVyKTtcXG4gNzU4OlxcdFxcbiA3NTk6XFx0XFx0cmMgPSBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcihcXHUwMDI2bWN0cF9pM2Nfbm90aWZpZXIpO1xcbiA3NjA6XFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG4gNzYxOlxcdFxcdFxcdHByX3dhcm4oXFxcIk1DVFAgSTNDIGNvdWxkIG5vdCB1bnJlZ2lzdGVyIG5vdGlmaWVyLCAlZFxcXFxuXFxcIiwgcmMpO1xcbiA3NjI6XFx0XFxuIDc2MzpcXHRcXHRtY3RwX2kzY19idXNfcmVtb3ZlX2FsbCgpO1xcbiA3NjQ6XFx0fVxcbiA3NjU6XFx0XFxuIDc2NjpcXHRtb2R1bGVfaW5pdChtY3RwX2kzY19tb2RfaW5pdCk7XFxuIDc2NzpcXHRtb2R1bGVfZXhpdChtY3RwX2kzY19tb2RfZXhpdCk7XFxuIDc2ODpcXHRcXG4gNzY5OlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUoaTNjLCBtY3RwX2kzY19pZHMpO1xcbiA3NzA6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNQ1RQIEkzQyBkZXZpY2VcXFwiKTtcXG4gNzcxOlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4gNzcyOlxcdE1PRFVMRV9BVVRIT1IoXFxcIk1hdHQgSm9obnN0b24gXFx1MDAzY21hdHRAY29kZWNvbnN0cnVjdC5jb20uYXVcXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDExOjM3OjQ2LjAxMTgwMzYwMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTcxMjE1NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBXb3J0aCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBtY3RwX2kzY19tb2RfaW5pdGAsIHdoaWNoIGlzIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEl0J3MgYW4gZXJyb3IgcGF0aCBmaXgsIGJhc2ljYWxseSBhZGRpbmcgY2xlYW51cCBpbiBjYXNlIHNvbWV0aGluZyBnb2VzIHdyb25nIGR1cmluZyBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbGVhbiB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aHMgYXJlIGdlbmVyYWxseSBkaWZmaWN1bHQgZm9yIHN5emthbGxlciB0byBoaXQgZGlyZWN0bHkgdW5sZXNzIHRoZXJlJ3MgYSBzcGVjaWZpYyBtZWNoYW5pc20gdG8gdHJpZ2dlciBtb2R1bGUgbG9hZGluZyBhbmQgZmFpbHVyZS4gU3l6a2FsbGVyIGNhbiBsb2FkL3VubG9hZCBtb2R1bGVzLCBvciB0cmlnZ2VyIGluaXQgZXJyb3JzIG9uIGJvb3QgaWYgdGhlIGRyaXZlcidzIGJ1aWx0LWluLlxuXG5Ib3dldmVyLCBgbWN0cF9pM2NfbW9kX2luaXRgIHJ1bnMgb24gbW9kdWxlIGxvYWQgb3IgYm9vdCwgYW5kIGlmIGl0IGZhaWxzLCBpdCBjbGVhbnMgdXAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlByb2JhYmx5IG5vdCB3b3J0aCBmdXp6aW5nLlwiIEl0J3MgYSBjbGVhbnVwIHBhdGguIEJ1dCB0aGVuIEkgcmVtZW1iZXIgZmF1bHQgaW5qZWN0aW9uISBJZiBmYXVsdCBpbmplY3Rpb24gaXMgZW5hYmxlZCwgYSBmYWlsZWQgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGNhbGwgKmNvdWxkKiB0cmlnZ2VyIHRoaXMgcGF0aC4gVGhlIHF1ZXN0aW9uIHJlbWFpbnM6IGlzIGl0ICp3b3J0aCogZnV6emluZz8gTW9kdWxlIGluaXQgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgcnVuIG9ubHkgb25jZS4gU3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gZnV6eiBgaW5pdF9tb2R1bGVgIGlmIGl0IGhhZCBhY2Nlc3MgdG8gbW9kdWxlIGZpbGVzLCBidXQgdXN1YWxseSBpdCBkb2Vzbid0LlxuXG5Ob3csIHRoZSBwYXRjaCBpdHNlbGYgaXMgaW5jcmVkaWJseSBzaW1wbGU6IGl0J3MganVzdCBhZGRpbmcgY2xlYW51cCB0byBhbiBlcnJvciBwYXRoIGluIGEgbW9kdWxlIGluaXQgZnVuY3Rpb24uIEdpdmVuIHRoaXMsIEkgd2FzIGdvaW5nIHRvIG1hcmsgaXQgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAgYmVjYXVzZSBlcnJvciBwYXRocyBkdXJpbmcgbW9kdWxlIGluaXQgYXJlIGhhcmQgdG8gcmVhY2gsIGFuZCBpdCBkb2Vzbid0IGV4cG9zZSBhbnkgbmV3IGF0dGFjayBzdXJmYWNlIG9yIGNvbXBsZXggbG9naWMuXG5cbkJ1dCwgYmVmb3JlIEkgY29tbWl0IHRvIHRoYXQsIGxldCdzIGxvb2sgYXQgdGhlIGd1aWRlbGluZXMuIExldCdzIHNlZS4uLiB0aGUgZ3VpZGVsaW5lcyBzYXkgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIHRoaW5ncyBsaWtlIG1vZGlmaWNhdGlvbnMgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBmaWxlcywgY29tbWVudHMsIG9yIHB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMuIE9rYXksIG15IHBhdGNoIGlzbid0IHRoYXQuIEl0IGFsc28gc2F5cyByZXR1cm4gYGZhbHNlYCBpZiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBJcyAqdGhpcyogaW1wb3NzaWJsZT9cblxuV2VsbCwgaWYgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGZhaWxzLCBpdCdzIGFuIGVycm9yIHBhdGgsIGFuZCBpdCAqY2FuKiBiZSByZWFjaGVkIHZpYSBmYXVsdCBpbmplY3Rpb24uIFNvLCBpcyBpdCB3b3J0aCBmdXp6aW5nPyBUaGUgZ3VpZGVsaW5lcyBtZW50aW9uIHRoYXQgaWYgdGhlIHBhdGNoIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgSSBzaG91bGQgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSBpZiB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIE9rYXksIGl0J3MgYSBkcml2ZXIgbW9kdWxlIGluaXQsIHdoaWNoIG1lYW5zIGRyaXZlciBhbmQga2VybmVsIGxvZ2ljLlxuXG5TbywgbGV0J3MgY2hlY2sgaWYgTUNUUCBJM0MgaXMgcmVhY2hhYmxlLiBNQ1RQIG92ZXIgSTNDLiBJM0MgaXMgYSBoYXJkd2FyZSBidXMuIElzIHRoZXJlIGFuIEkzQyBzb2Z0d2FyZSBlbXVsYXRvcj8gSSBuZWVkIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIEkzQyBlbXVsYXRvciBvciBkdW1teSBkcml2ZXIgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZXJyb3IgcGF0aCBjYW4gYmUgcHJhY3RpY2FsbHkgcmVhY2hlZCB2aWEgc3l6a2FsbGVyLiBJZiB0aGVyZSBpcywgdGhlbiBgV29ydGhGdXp6aW5nPXRydWVgLiBJZiBub3QsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDAzLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDEuNTgzMDIxMDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3OTkzNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaTNjXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaTNjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgyNDYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvaTNjL0tjb25maWc9Mz1tZW51Y29uZmlnIEkzQ1xcbi0tXFxuZHJpdmVycy9pM2MvS2NvbmZpZy0xOS1cXHQgIFRoaXMgSTNDIHN1cHBvcnQgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZVxcbmRyaXZlcnMvaTNjL0tjb25maWc6MjA6XFx0ICB3aWxsIGJlIGNhbGxlZCBpM2MuXFxuZHJpdmVycy9pM2MvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL2kzYy9LY29uZmlnPTIyPWlmIEkzQ1xcbmRyaXZlcnMvaTNjL0tjb25maWc6MjM6c291cmNlIFxcXCJkcml2ZXJzL2kzYy9tYXN0ZXIvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2kzYy9LY29uZmlnLTI0LWVuZGlmICMgSTNDXFxuLS1cXG5kcml2ZXJzL2kzYy9LY29uZmlnPTI2PWNvbmZpZyBJM0NfT1JfSTJDXFxuLS1cXG5kcml2ZXJzL2kzYy9LY29uZmlnLTMwLVxcdGhlbHBcXG5kcml2ZXJzL2kzYy9LY29uZmlnOjMxOlxcdCAgRGV2aWNlIGRyaXZlcnMgdXNpbmcgbW9kdWxlX2kzY19pMmNfZHJpdmVyKCkgY2FuIHVzZSBlaXRoZXJcXG5kcml2ZXJzL2kzYy9LY29uZmlnOjMyOlxcdCAgaTJjIG9yIGkzYyBob3N0cywgYnV0IGNhbm5vdCBiZSBidWlsdC1pbiBmb3IgdGhlIGtlcm5lbCB3aGVuXFxuZHJpdmVycy9pM2MvS2NvbmZpZy0zMy1cXHQgIENPTkZJR19JM0M9bS5cXG4tLVxcbmRyaXZlcnMvaTNjL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvaTNjL01ha2VmaWxlOjI6aTNjLXlcXHRcXHRcXHRcXHQ6PSBkZXZpY2UubyBtYXN0ZXIub1xcbmRyaXZlcnMvaTNjL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0kzQylcXHRcXHQrPSBpM2Mub1xcbmRyaXZlcnMvaTNjL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0kzQylcXHRcXHQrPSBtYXN0ZXIvXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNy0vKipcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxODogKiBpM2NfZGV2aWNlX2RvX3hmZXJzKCkgLSBkbyBJM0MgdHJhbnNmZXJzIGRpcmVjdGVkIHRvIGEgc3BlY2lmaWMgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTktICpcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTM1LSAqL1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjM2OmludCBpM2NfZGV2aWNlX2RvX3hmZXJzKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYsIHN0cnVjdCBpM2NfeGZlciAqeGZlcnMsXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Mzc6XFx0XFx0XFx0aW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzgte1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNDgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NDk6XFx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy01MC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNTItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NTM6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NTQ6XFx0cmV0ID0gaTNjX2Rldl9kb194ZmVyc19sb2NrZWQoZGV2LVxcdTAwM2VkZXNjLCB4ZmVycywgbnhmZXJzLCBtb2RlKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo1NTpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTU2LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjU3OlxcdGkzY19idXNfcnBtX3B1dChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNTgtXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy02MC19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjE6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9kb194ZmVycyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNjItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNjMtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NjQ6ICogaTNjX2RldmljZV9kb19zZXRkYXNhKCkgLSBkbyBJM0MgZHluYW1pYyBhZGRyZXNzIGFzc2lnbmVtZW50IHdpdGhcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy02NS0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBhZGRyZXNzXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03MC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo3MTppbnQgaTNjX2RldmljZV9kb19zZXRkYXNhKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzIte1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzQtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6NzU6XFx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy03Ni1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtNzgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6Nzk6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6ODA6XFx0cmV0ID0gaTNjX2Rldl9zZXRkYXNhX2xvY2tlZChkZXYtXFx1MDAzZWRlc2MpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjgxOlxcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtODItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6ODM6XFx0aTNjX2J1c19ycG1fcHV0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy04NC1cXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg2LX1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzo4NzpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2RvX3NldGRhc2EpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg4LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTg5LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjkwOiAqIGkzY19kZXZpY2VfZ2V0X2luZm8oKSAtIGdldCBJM0MgZGV2aWNlIGluZm9ybWF0aW9uXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtOTEtICpcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTk2LSAqL1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjk3OnZvaWQgaTNjX2RldmljZV9nZXRfaW5mbyhjb25zdCBzdHJ1Y3QgaTNjX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjk4OlxcdFxcdFxcdCBzdHJ1Y3QgaTNjX2RldmljZV9pbmZvICppbmZvKVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTk5LXtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwMi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMDM6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTA0LVxcdGlmIChkZXYtXFx1MDAzZWRlc2MpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTA1LVxcdFxcdCppbmZvID0gZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpbmZvO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEwNjpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwNy19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTA4OkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfZ2V0X2luZm8pO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEwOS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMTAtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTExOiAqIGkzY19kZXZpY2VfZGlzYWJsZV9pYmkoKSAtIERpc2FibGUgSUJJcyBjb21pbmcgZnJvbSBhIHNwZWNpZmljIGRldmljZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTExMi0gKiBAZGV2OiBkZXZpY2Ugb24gd2hpY2ggSUJJcyBzaG91bGQgYmUgZGlzYWJsZWRcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTExOC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMTk6aW50IGkzY19kZXZpY2VfZGlzYWJsZV9pYmkoc3RydWN0IGkzY19kZXZpY2UgKmRldilcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjAte1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTIyLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEyMzpcXHRpZiAoaTNjX2J1c19ycG1faWJpX2FsbG93ZWQoZGV2LVxcdTAwM2VidXMpKSB7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI0OlxcdFxcdHJldCA9IGkzY19idXNfcnBtX2dldChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTI1LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMjgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTI5OlxcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzMC1cXHRpZiAoZGV2LVxcdTAwM2VkZXNjKSB7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTMxLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlZGVzYy1cXHUwMDNlaWJpX2xvY2spO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjEzMjpcXHRcXHRyZXQgPSBpM2NfZGV2X2Rpc2FibGVfaWJpX2xvY2tlZChkZXYtXFx1MDAzZWRlc2MpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTEzMy1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldi1cXHUwMDNlZGVzYy1cXHUwMDNlaWJpX2xvY2spO1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTM2LVxcdH1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxMzc6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xMzgtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTM5OlxcdGlmICghcmV0IHx8IGkzY19idXNfcnBtX2liaV9hbGxvd2VkKGRldi1cXHUwMDNlYnVzKSlcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNDA6XFx0XFx0aTNjX2J1c19ycG1fcHV0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDEtXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDMtfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2Rpc2FibGVfaWJpKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNDUtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTQ2LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE0NzogKiBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoKSAtIEVuYWJsZSBJQklzIGNvbWluZyBmcm9tIGEgc3BlY2lmaWMgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTQ4LSAqIEBkZXY6IGRldmljZSBvbiB3aGljaCBJQklzIHNob3VsZCBiZSBlbmFibGVkXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNTEtICogYWxsIHBlbmRpbmcgSUJJcyB0byBiZSBwcm9jZXNzZWQuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbiBhIGRldmljZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE1MjogKiB3aGVyZSBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKCkgaGFzIHN1Y2NlZWRlZC5cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNTMtICpcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE1OC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNTk6aW50IGkzY19kZXZpY2VfZW5hYmxlX2liaShzdHJ1Y3QgaTNjX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE2MC17XFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTYzOlxcdHJldCA9IGkzY19idXNfcnBtX2dldChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNjYtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTY3OlxcdGkzY19idXNfbm9ybWFsdXNlX2xvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE2OC1cXHRpZiAoZGV2LVxcdTAwM2VkZXNjKSB7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTY5LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmRldi1cXHUwMDNlZGVzYy1cXHUwMDNlaWJpX2xvY2spO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE3MDpcXHRcXHRyZXQgPSBpM2NfZGV2X2VuYWJsZV9pYmlfbG9ja2VkKGRldi1cXHUwMDNlZGVzYyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTcxLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xNzQtXFx0fVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE3NTpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE3Ni1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxNzc6XFx0aWYgKHJldCB8fCBpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChkZXYtXFx1MDAzZWJ1cykpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTc4OlxcdFxcdGkzY19idXNfcnBtX3B1dChkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTc5LVxcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTgxLX1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxODI6RVhQT1JUX1NZTUJPTF9HUEwoaTNjX2RldmljZV9lbmFibGVfaWJpKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xODMtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTg0LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjE4NTogKiBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKCkgLSBSZXF1ZXN0IGFuIElCSVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTE4Ni0gKiBAZGV2OiBkZXZpY2UgZm9yIHdoaWNoIHdlIHNob3VsZCBlbmFibGUgSUJJc1xcbi0tXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTkwLSAqIHByb2Nlc3MgSUJJcyBjb21pbmcgZnJvbSBAZGV2LiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgdGhlIElCSSBpcyBub3RcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoxOTE6ICogZW5hYmxlZCB1bnRpbCBpM2NfZGV2aWNlX2VuYWJsZV9pYmkoKSBpcyBjYWxsZWQuXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTkyLSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0xOTQtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTk1OmludCBpM2NfZGV2aWNlX3JlcXVlc3RfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MTk2OlxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBpM2NfaWJpX3NldHVwICpyZXEpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMTk3LXtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIwMi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMDM6XFx0cmV0ID0gaTNjX2J1c19ycG1fZ2V0KGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIwNi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMDc6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjA4LVxcdGlmIChkZXYtXFx1MDAzZWRlc2MpIHtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMDktXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjEwOlxcdFxcdHJldCA9IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2VkKGRldi1cXHUwMDNlZGVzYywgcmVxKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMTEtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZkZXYtXFx1MDAzZWRlc2MtXFx1MDAzZWliaV9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIxNC1cXHR9XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjE1OlxcdGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjE2LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIxNzpcXHRpM2NfYnVzX3JwbV9wdXQoZGV2LVxcdTAwM2VidXMpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIxOC1cXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMC19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjIxOkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kZXZpY2VfcmVxdWVzdF9pYmkpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyMi1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMjMtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjI0OiAqIGkzY19kZXZpY2VfZnJlZV9pYmkoKSAtIEZyZWUgYWxsIHJlc291cmNlcyBuZWVkZWQgZm9yIElCSSBoYW5kbGluZ1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIyNS0gKiBAZGV2OiBkZXZpY2Ugb24gd2hpY2ggeW91IHdhbnQgdG8gcmVsZWFzZSBJQkkgcmVzb3VyY2VzXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMjctICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGUtYWxsb2NhdGluZyByZXNvdXJjZXMgcHJldmlvdXNseVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyODogKiBhbGxvY2F0ZWQgYnkgaTNjX2RldmljZV9yZXF1ZXN0X2liaSgpLiBJdCBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGRpc2FibGluZ1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjIyOTogKiBJQklzIHdpdGggaTNjX2RldmljZV9kaXNhYmxlX2liaSgpLlxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTIzMC0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzE6dm9pZCBpM2NfZGV2aWNlX2ZyZWVfaWJpKHN0cnVjdCBpM2NfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjMyLXtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzM6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhkZXYtXFx1MDAzZWJ1cyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM0LVxcdGlmIChkZXYtXFx1MDAzZWRlc2MpIHtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yMzUtXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjM2OlxcdFxcdGkzY19kZXZfZnJlZV9pYmlfbG9ja2VkKGRldi1cXHUwMDNlZGVzYyk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM3LVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2ZGV2LVxcdTAwM2VkZXNjLVxcdTAwM2VpYmlfbG9jayk7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjM4LVxcdH1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyMzk6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGRldi1cXHUwMDNlYnVzKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNDAtfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0MTpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2ZyZWVfaWJpKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNDItXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjQzLS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0NDogKiBpM2NkZXZfdG9fZGV2KCkgLSBSZXR1cm5zIHRoZSBkZXZpY2UgZW1iZWRkZWQgaW4gQGkzY2RldlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI0NTogKiBAaTNjZGV2OiBJM0MgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjQ2LSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNDgtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjQ5OnN0cnVjdCBkZXZpY2UgKmkzY2Rldl90b19kZXYoc3RydWN0IGkzY19kZXZpY2UgKmkzY2RldilcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTAte1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI1MTpcXHRyZXR1cm4gXFx1MDAyNmkzY2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1Mi19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGkzY2Rldl90b19kZXYpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1NC1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNTUtLyoqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjU2OiAqIGkzY19kZXZpY2VfbWF0Y2hfaWQoKSAtIFJldHVybnMgdGhlIGkzY19kZXZpY2VfaWQgZW50cnkgbWF0Y2hpbmcgQGkzY2RldlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI1NzogKiBAaTNjZGV2OiBJM0MgZGV2aWNlXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjU4LSAqIEBpZF90YWJsZTogSTNDIGRldmljZSBtYXRjaCB0YWJsZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI1OS0gKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2MDogKiBSZXR1cm46IGEgcG9pbnRlciB0byBhbiBpM2NfZGV2aWNlX2lkIG9iamVjdCBvciBOVUxMIGlmIHRoZXJlJ3Mgbm8gbWF0Y2guXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMjYxLSAqL1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2Mjpjb25zdCBzdHJ1Y3QgaTNjX2RldmljZV9pZCAqXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjYzOmkzY19kZXZpY2VfbWF0Y2hfaWQoc3RydWN0IGkzY19kZXZpY2UgKmkzY2RldixcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNjQ6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBpM2NfZGV2aWNlX2lkICppZF90YWJsZSlcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjUte1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjI2NjpcXHRzdHJ1Y3QgaTNjX2RldmljZV9pbmZvIGRldmluZm87XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MjY3OlxcdGNvbnN0IHN0cnVjdCBpM2NfZGV2aWNlX2lkICppZDtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNjgtXFx0dTE2IG1hbnVmLCBwYXJ0LCBleHRfaW5mbztcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTI3MC1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzoyNzE6XFx0aTNjX2RldmljZV9nZXRfaW5mbyhpM2NkZXYsIFxcdTAwMjZkZXZpbmZvKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yNzItXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0yOTktfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMwMDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX21hdGNoX2lkKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDEtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzAyLS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMwMzogKiBpM2NfZGV2aWNlX2dldF9zdXBwb3J0ZWRfeGZlcl9tb2RlIC0gUmV0dXJucyB0aGUgc3VwcG9ydGVkIHRyYW5zZmVyIG1vZGUgYnlcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDQtICpcXHRcXHRcXHRcXHRcXHRjb25uZWN0ZWQgbWFzdGVyIGNvbnRyb2xsZXIuXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMDctICogUmV0dXJuOiBhIGJpdCBtYXNrLCB3aGljaCBzdXBwb3J0ZWQgdHJhbnNmZXIgbW9kZSwgYml0IHBvc2l0aW9uIGlzIGRlZmluZWQgYXRcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMDg6ICpcXHQgICBlbnVtIGkzY19oZHJfbW9kZVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMwOS0gKi9cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMTA6dTMyIGkzY19kZXZpY2VfZ2V0X3N1cHBvcnRlZF94ZmVyX21vZGUoc3RydWN0IGkzY19kZXZpY2UgKmRldilcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTEte1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxMjpcXHRyZXR1cm4gaTNjX2Rldl9nZXRfbWFzdGVyKGRldi1cXHUwMDNlZGVzYyktXFx1MDAzZXRoaXMtXFx1MDAzZWluZm8uaGRyX2NhcCB8IEJJVChJM0NfU0RSKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTMtfVxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNDpFWFBPUlRfU1lNQk9MX0dQTChpM2NfZGV2aWNlX2dldF9zdXBwb3J0ZWRfeGZlcl9tb2RlKTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMTUtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzE2LS8qKlxcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMxNzogKiBpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIoKSAtIHJlZ2lzdGVyIGFuIEkzQyBkZXZpY2UgZHJpdmVyXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzE4LSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjUtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzI2OmludCBpM2NfZHJpdmVyX3JlZ2lzdGVyX3dpdGhfb3duZXIoc3RydWN0IGkzY19kcml2ZXIgKmRydiwgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzI3LXtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMjgtXFx0ZHJ2LVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozMjk6XFx0ZHJ2LVxcdTAwM2Vkcml2ZXIuYnVzID0gXFx1MDAyNmkzY19idXNfdHlwZTtcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zMzAtXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzMxLVxcdGlmICghZHJ2LVxcdTAwM2Vwcm9iZSkge1xcbmRyaXZlcnMvaTNjL2RldmljZS5jOjMzMjpcXHRcXHRwcl9lcnIoXFxcIlRyeWluZyB0byByZWdpc3RlciBhbiBpM2MgZHJpdmVyIHdpdGhvdXQgcHJvYmUgY2FsbGJhY2tcXFxcblxcXCIpO1xcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzMy1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTMzNy19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzM4OkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kcml2ZXJfcmVnaXN0ZXJfd2l0aF9vd25lcik7XFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzM5LVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTM0MC0vKipcXG5kcml2ZXJzL2kzYy9kZXZpY2UuYzozNDE6ICogaTNjX2RyaXZlcl91bnJlZ2lzdGVyKCkgLSB1bnJlZ2lzdGVyIGFuIEkzQyBkZXZpY2UgZHJpdmVyXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQyLSAqXFxuLS1cXG5kcml2ZXJzL2kzYy9kZXZpY2UuYy0zNDYtICovXFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzQ3OnZvaWQgaTNjX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpM2NfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9pM2MvZGV2aWNlLmMtMzQ4LXtcXG4tLVxcbmRyaXZlcnMvaTNjL2RldmljZS5jLTM1MC19XFxuZHJpdmVycy9pM2MvZGV2aWNlLmM6MzUxOkVYUE9SVF9TWU1CT0xfR1BMKGkzY19kcml2ZXJfdW5yZWdpc3Rlcik7XFxuLS1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0xMC1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoxMTojaW5jbHVkZSBcXHUwMDNjbGludXgvaTNjL21hc3Rlci5oXFx1MDAzZVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTEyLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9pby5oXFx1MDAzZVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTEzLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE0OmludCBfX211c3RfY2hlY2sgaTNjX2J1c19ycG1fZ2V0KHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE1OnZvaWQgaTNjX2J1c19ycG1fcHV0KHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE2OmJvb2wgaTNjX2J1c19ycG1faWJpX2FsbG93ZWQoc3RydWN0IGkzY19idXMgKmJ1cyk7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtMTctXFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MTg6dm9pZCBpM2NfYnVzX25vcm1hbHVzZV9sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjE5OnZvaWQgaTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTIwLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjIxOmludCBpM2NfZGV2X3NldGRhc2FfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6MjI6aW50IGkzY19kZXZfZG9feGZlcnNfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldixcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyMzpcXHRcXHRcXHQgICAgc3RydWN0IGkzY194ZmVyICp4ZmVycyxcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyNDpcXHRcXHRcXHQgICAgaW50IG54ZmVycywgZW51bSBpM2NfeGZlcl9tb2RlIG1vZGUpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI1OmludCBpM2NfZGV2X2Rpc2FibGVfaWJpX2xvY2tlZChzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXYpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjI2OmludCBpM2NfZGV2X2VuYWJsZV9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldik7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6Mjc6aW50IGkzY19kZXZfcmVxdWVzdF9pYmlfbG9ja2VkKHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRldixcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDoyODpcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGkzY19pYmlfc2V0dXAgKnJlcSk7XFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmg6Mjk6dm9pZCBpM2NfZGV2X2ZyZWVfaWJpX2xvY2tlZChzdHJ1Y3QgaTNjX2Rldl9kZXNjICpkZXYpO1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTMwLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTMxLS8qKlxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjMyOiAqIGkzY193cml0ZWxfZmlmbyAtIFdyaXRlIGRhdGEgYnVmZmVyIHRvIDMyYml0IEZJRk9cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0zMy0gKiBAYWRkcjogRklGTyBBZGRyZXNzIHRvIHdyaXRlIHRvXFxuLS1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC0zNi0gKi9cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDozNzpzdGF0aWMgaW5saW5lIHZvaWQgaTNjX3dyaXRlbF9maWZvKHZvaWQgX19pb21lbSAqYWRkciwgY29uc3Qgdm9pZCAqYnVmLFxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTM4LVxcdFxcdFxcdFxcdCAgIGludCBuYnl0ZXMpXFxuLS1cXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC01My0vKipcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaDo1NDogKiBpM2NfcmVhZGxfZmlmbyAtIFJlYWQgZGF0YSBidWZmZXIgZnJvbSAzMmJpdCBGSUZPXFxuZHJpdmVycy9pM2MvaW50ZXJuYWxzLmgtNTUtICogQGFkZHI6IEZJRk8gQWRkcmVzcyB0byByZWFkIGZyb21cXG4tLVxcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oLTU4LSAqL1xcbmRyaXZlcnMvaTNjL2ludGVybmFscy5oOjU5OnN0YXRpYyBpbmxpbmUgdm9pZCBpM2NfcmVhZGxfZmlmbyhjb25zdCB2b2lkIF9faW9tZW0gKmFkZHIsIHZvaWQgKmJ1ZixcXG5kcml2ZXJzL2kzYy9pbnRlcm5hbHMuaC02MC1cXHRcXHRcXHRcXHQgIGludCBuYnl0ZXMpXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yNS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNjpzdGF0aWMgREVGSU5FX0lEUihpM2NfYnVzX2lkcik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjc6c3RhdGljIERFRklORV9NVVRFWChpM2NfY29yZV9sb2NrKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODpzdGF0aWMgaW50IF9faTNjX2ZpcnN0X2R5bmFtaWNfYnVzX251bTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyOTpzdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChpM2NfYnVzX25vdGlmaWVyKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0zMC1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0zMS0vKipcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzozMjogKiBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2sgLSBMb2NrIHRoZSBidXMgZm9yIGEgbWFpbnRlbmFuY2Ugb3BlcmF0aW9uXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMzMtICogQGJ1czogSTNDIGJ1cyB0byB0YWtlIHRoZSBsb2NrIG9uXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy00Ni0gKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo0NzpzdGF0aWMgdm9pZCBpM2NfYnVzX21haW50ZW5hbmNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cylcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy00OC17XFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01Mi0vKipcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo1MzogKiBpM2NfYnVzX21haW50ZW5hbmNlX3VubG9jayAtIFJlbGVhc2UgdGhlIGJ1cyBsb2NrIGFmdGVyIGEgbWFpbnRlbmFuY2VcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy01NC0gKlxcdFxcdFxcdCAgICAgIG9wZXJhdGlvblxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNTctICogU2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBidXMgbWFpbnRlbmFuY2Ugb3BlcmF0aW9uIGlzIGRvbmUuIFNlZVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjU4OiAqIGkzY19idXNfbWFpbnRlbmFuY2VfbG9jaygpIGZvciBtb3JlIGRldGFpbHMgb24gd2hhdCB0aGVzZSBtYWludGVuYW5jZVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTU5LSAqIG9wZXJhdGlvbnMgYXJlLlxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTYwLSAqL1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjYxOnN0YXRpYyB2b2lkIGkzY19idXNfbWFpbnRlbmFuY2VfdW5sb2NrKHN0cnVjdCBpM2NfYnVzICpidXMpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjIte1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjYtLyoqXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Njc6ICogaTNjX2J1c19ub3JtYWx1c2VfbG9jayAtIExvY2sgdGhlIGJ1cyBmb3IgYSBub3JtYWwgb3BlcmF0aW9uXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtNjgtICogQGJ1czogSTNDIGJ1cyB0byB0YWtlIHRoZSBsb2NrIG9uXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy03MC0gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBidXMgbG9jayBmb3IgYW55IG9wZXJhdGlvbiB0aGF0IGlzIG5vdCBhIG1haW50ZW5hbmNlXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6NzE6ICogb3BlcmF0aW9uIChzZWUgaTNjX2J1c19tYWludGVuYW5jZV9sb2NrKCkgZm9yIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZlxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTcyLSAqIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMpLiBCYXNpY2FsbHkgYWxsIGNvbW11bmljYXRpb25zIHdpdGggSTNDIGRldmljZXMgYXJlXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04MS0gKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo4Mjp2b2lkIGkzY19idXNfbm9ybWFsdXNlX2xvY2soc3RydWN0IGkzY19idXMgKmJ1cylcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04My17XFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04Ny0vKipcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo4ODogKiBpM2NfYnVzX25vcm1hbHVzZV91bmxvY2sgLSBSZWxlYXNlIHRoZSBidXMgbG9jayBhZnRlciBhIG5vcm1hbCBvcGVyYXRpb25cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy04OS0gKiBAYnVzOiBJM0MgYnVzIHRvIHJlbGVhc2UgdGhlIGxvY2sgb25cXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTkxLSAqIFNob3VsZCBiZSBjYWxsZWQgd2hlbiBhIG5vcm1hbCBvcGVyYXRpb24gaXMgZG9uZS4gU2VlXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6OTI6ICogaTNjX2J1c19ub3JtYWx1c2VfbG9jaygpIGZvciBtb3JlIGRldGFpbHMgb24gd2hhdCB0aGVzZSBub3JtYWwgb3BlcmF0aW9uc1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTkzLSAqIGFyZS5cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy05NC0gKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzo5NTp2b2lkIGkzY19idXNfbm9ybWFsdXNlX3VubG9jayhzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTk2LXtcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTk5LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwMDpzdGF0aWMgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTAxOmkzY19idXNfdG9faTNjX21hc3RlcihzdHJ1Y3QgaTNjX2J1cyAqaTNjYnVzKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEwMi17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTAzOlxcdHJldHVybiBjb250YWluZXJfb2YoaTNjYnVzLCBzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyLCBidXMpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEwNC19XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA1LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEwNjpzdGF0aWMgc3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqZGV2X3RvX2kzY21hc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA3LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMDg6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIsIGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTA5LX1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMTAtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTExOnN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGkzY19tYXN0ZXJfcnBtX2dldChzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICptYXN0ZXIpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTEyLXtcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEyMS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMjI6c3RhdGljIHZvaWQgaTNjX21hc3Rlcl9ycG1fcHV0KHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcilcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMjMte1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTI3LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjEyODppbnQgaTNjX2J1c19ycG1fZ2V0KHN0cnVjdCBpM2NfYnVzICpidXMpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTI5LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMzA6XFx0cmV0dXJuIGkzY19tYXN0ZXJfcnBtX2dldChpM2NfYnVzX3RvX2kzY19tYXN0ZXIoYnVzKSk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTMxLX1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMzItXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTMzOnZvaWQgaTNjX2J1c19ycG1fcHV0KHN0cnVjdCBpM2NfYnVzICpidXMpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTM0LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMzU6XFx0aTNjX21hc3Rlcl9ycG1fcHV0KGkzY19idXNfdG9faTNjX21hc3RlcihidXMpKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xMzYtfVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzNy1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxMzg6Ym9vbCBpM2NfYnVzX3JwbV9pYmlfYWxsb3dlZChzdHJ1Y3QgaTNjX2J1cyAqYnVzKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTEzOS17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTQwOlxcdHJldHVybiBpM2NfYnVzX3RvX2kzY19tYXN0ZXIoYnVzKS1cXHUwMDNlcnBtX2liaV9hbGxvd2VkO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0MS19XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQyLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE0MzpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIGkzY19kZXZpY2VfdHlwZTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNDQtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTQ1OnN0YXRpYyBzdHJ1Y3QgaTNjX2J1cyAqZGV2X3RvX2kzY2J1cyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTQ2LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNDc6XFx0c3RydWN0IGkzY19tYXN0ZXJfY29udHJvbGxlciAqbWFzdGVyO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE0OC1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNDk6XFx0aWYgKGRldi1cXHUwMDNldHlwZSA9PSBcXHUwMDI2aTNjX2RldmljZV90eXBlKVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1MDpcXHRcXHRyZXR1cm4gZGV2X3RvX2kzY2RldihkZXYpLVxcdTAwM2VidXM7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUxLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1MjpcXHRtYXN0ZXIgPSBkZXZfdG9faTNjbWFzdGVyKGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTUzLVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTU2LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE1NzpzdGF0aWMgc3RydWN0IGkzY19kZXZfZGVzYyAqZGV2X3RvX2kzY2Rlc2Moc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE1OC17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTU5OlxcdHN0cnVjdCBpM2NfbWFzdGVyX2NvbnRyb2xsZXIgKm1hc3RlcjtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNjAtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTYxOlxcdGlmIChkZXYtXFx1MDAzZXR5cGUgPT0gXFx1MDAyNmkzY19kZXZpY2VfdHlwZSlcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNjI6XFx0XFx0cmV0dXJuIGRldl90b19pM2NkZXYoZGV2KS1cXHUwMDNlZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNjMtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTY0OlxcdG1hc3RlciA9IGRldl90b19pM2NtYXN0ZXIoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNjUtXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0xNjk9c3RhdGljIHNzaXplX3QgYmNyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTcyLXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNzM6XFx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxNzQ6XFx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xNzUtXFx0c3NpemVfdCByZXQ7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTc2LVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE3NzpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTc4OlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE3OS1cXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTAyeFxcXFxuXFxcIiwgZGVzYy1cXHUwMDNlaW5mby5iY3IpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE4MDpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xODEtXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0xODY9c3RhdGljIHNzaXplX3QgZGNyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTg5LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTA6XFx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoxOTE6XFx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTItXFx0c3NpemVfdCByZXQ7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMTkzLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE5NDpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MTk1OlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTE5Ni1cXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIjB4JTAyeFxcXFxuXFxcIiwgZGVzYy1cXHUwMDNlaW5mby5kY3IpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjE5NzpcXHRpM2NfYnVzX25vcm1hbHVzZV91bmxvY2soYnVzKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0xOTgtXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYz0yMDM9c3RhdGljIHNzaXplX3QgcGlkX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjA2LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMDc6XFx0c3RydWN0IGkzY19idXMgKmJ1cyA9IGRldl90b19pM2NidXMoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMDg6XFx0c3RydWN0IGkzY19kZXZfZGVzYyAqZGVzYztcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMDktXFx0c3NpemVfdCByZXQ7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjEwLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIxMTpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjEyOlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIxMy1cXHRyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgXFxcIiVsbHhcXFxcblxcXCIsIGRlc2MtXFx1MDAzZWluZm8ucGlkKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMTQ6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjE1LVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjIwPXN0YXRpYyBzc2l6ZV90IGR5bmFtaWNfYWRkcmVzc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIyMy17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjI0OlxcdHN0cnVjdCBpM2NfYnVzICpidXMgPSBkZXZfdG9faTNjYnVzKGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjI1OlxcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjI2LVxcdHNzaXplX3QgcmV0O1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTIyNy1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMjg6XFx0aTNjX2J1c19ub3JtYWx1c2VfbG9jayhidXMpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjIyOTpcXHRkZXNjID0gZGV2X3RvX2kzY2Rlc2MoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yMzAtXFx0cmV0ID0gc3lzZnNfZW1pdChidWYsIFxcXCIlMDJ4XFxcXG5cXFwiLCBkZXNjLVxcdTAwM2VpbmZvLmR5bl9hZGRyKTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyMzE6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjMyLVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjQxPXN0YXRpYyBzc2l6ZV90IGhkcmNhcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI0NC17XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjQ1OlxcdHN0cnVjdCBpM2NfYnVzICpidXMgPSBkZXZfdG9faTNjYnVzKGRldik7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjQ2OlxcdHN0cnVjdCBpM2NfZGV2X2Rlc2MgKmRlc2M7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjQ3LVxcdHNzaXplX3Qgb2Zmc2V0ID0gMCwgcmV0O1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjUwLVxcbmRyaXZlcnMvaTNjL21hc3Rlci5jOjI1MTpcXHRpM2NfYnVzX25vcm1hbHVzZV9sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6MjUyOlxcdGRlc2MgPSBkZXZfdG9faTNjZGVzYyhkZXYpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI1My1cXHRjYXBzID0gZGVzYy1cXHUwMDNlaW5mby5oZHJfY2FwO1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjc1LW91dDpcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyNzY6XFx0aTNjX2J1c19ub3JtYWx1c2VfdW5sb2NrKGJ1cyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjc3LVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM9MjgyPXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjg0LXtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODU6XFx0c3RydWN0IGkzY19kZXZpY2UgKmkzYyA9IGRldl90b19pM2NkZXYoZGV2KTtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYzoyODY6XFx0c3RydWN0IGkzY19kZXZpY2VfaW5mbyBkZXZpbmZvO1xcbmRyaXZlcnMvaTNjL21hc3Rlci5jLTI4Ny1cXHR1MTYgbWFudWYsIHBhcnQsIGV4dDtcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yODgtXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjg5OlxcdGkzY19kZXZpY2VfZ2V0X2luZm8oaTNjLCBcXHUwMDI2ZGV2aW5mbyk7XFxuZHJpdmVycy9pM2MvbWFzdGVyLmMtMjkwLVxcdG1hbnVmID0gSTNDX1BJRF9NQU5VRl9JRChkZXZpbmZvLnBpZCk7XFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yOTQtXFx0aWYgKEkzQ19QSURfUk5EX0xPV0VSXzMyQklUUyhkZXZpbmZvLnBpZCkpXFxuZHJpdmVycy9pM2MvbWFzdGVyLmM6Mjk1OlxcdFxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcImkzYzpkY3IlMDJYbWFudWYlMDRYXFxcXG5cXFwiLCBkZXZpbmZvLmRjcixcXG5kcml2ZXJzL2kzYy9tYXN0ZXIuYy0yOTYtXFx0XFx0XFx0ICAgICAgIG1hbnVmKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDEuNjM5ODI3OTU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MTg2OTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE1DVFAgb3ZlciBJM0MgRHJpdmVyIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgTUNUUCBJM0MgZHJpdmVyLiBJdCdzIGRlc2lnbmVkIGZvciBoYW5kbGluZyBNQ1RQIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBJM0MgaW50ZXJmYWNlLCBtYWtlcyBzZW5zZS4gQnV0LCB0aGUgcXVlc3Rpb24gSSd2ZSBnb3QgcmlnaHQgbm93IGlzLCBkb2VzIHRoZSBrZXJuZWwgaW5jbHVkZSBhbiBJM0MgZW11bGF0b3I/IE9yIHBlcmhhcHMgZXZlbiBhIHNpbXBsZSBkdW1teSBkcml2ZXIgZm9yIHRlc3RpbmcgcHVycG9zZXM/IEl0J2QgYmUgaHVnZWx5IGhlbHBmdWwgdG8gaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGF0IGF2YWlsYWJsZSwgZXZlbiBpZiBpdCdzIGp1c3QgYSBiYXNpYyBpbXBsZW1lbnRhdGlvbi4gTGV0IG1lIGRpZyBhcm91bmQgYW5kIHNlZSBpZiBJIGNhbiBsb2NhdGUgc29tZXRoaW5nLCBhIFwicGxhY2Vob2xkZXJcIiBkcml2ZXIgb3Igc2ltaWxhci4gQW55dGhpbmcgdGhhdCBjYW4gc2ltdWxhdGUgdGhlIEkzQyBidXMgZm9yIGRldmVsb3BtZW50IGFuZCB0ZXN0aW5nIHdvdWxkIGJlIGlkZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTAwMiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDExOjM4OjA1LjUzMTY5OTQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3Nzk1MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR1bW15XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaTNjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYz0xMTMzPXN0YXRpYyBpcnFyZXR1cm5fdCByZW5lc2FzX2kzY190ZW5kX2lzcihpbnQgaXJxLCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmMtMTE0NS1cXHRcXHRcXHRcXHQvKiBXZSBnb3QgYSBOQUNLSUUgKi9cXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYzoxMTQ2OlxcdFxcdFxcdFxcdHJlbmVzYXNfcmVhZGwoaTNjLVxcdTAwM2VyZWdzLCBOVERUQlAwKTsgLyogZHVtbXkgcmVhZCAqL1xcbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jLTExNDctXFx0XFx0XFx0XFx0cmVuZXNhc19jbGVhcl9iaXQoaTNjLVxcdTAwM2VyZWdzLCBCU1QsIEJTVF9OQUNLREYpO1xcbi0tXFxuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmM9MTE3ND1zdGF0aWMgaXJxcmV0dXJuX3QgcmVuZXNhc19pM2NfcnhfaXNyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL2kzYy9tYXN0ZXIvcmVuZXNhcy1pM2MuYy0xMTk1LVxcdFxcdFxcdFxcdHJlbmVzYXNfc2V0X2JpdChpM2MtXFx1MDAzZXJlZ3MsIFNDU1RSQ1RMLCBTQ1NUUkNUTF9SV0UpO1xcbmRyaXZlcnMvaTNjL21hc3Rlci9yZW5lc2FzLWkzYy5jOjExOTY6XFx0XFx0XFx0XFx0cmVuZXNhc19yZWFkbChpM2MtXFx1MDAzZXJlZ3MsIE5URFRCUDApOyAvKiBkdW1teSByZWFkICovXFxuZHJpdmVycy9pM2MvbWFzdGVyL3JlbmVzYXMtaTNjLmMtMTE5Ny1cXHRcXHRcXHRcXHRpZiAoY21kLVxcdTAwM2VpMmNfYnl0ZXNfbGVmdCA9PSAxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxMTozODowNS41ODk0OTgwODhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUyNDEzMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkkzQyBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwcm9ibGVtLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZSdzIG5vIGRlZGljYXRlZCBJM0MgZHVtbXkgZHJpdmVyIGtpY2tpbmcgYXJvdW5kLiBUaGF0J3MgYSBiaXQgb2RkOyB1c3VhbGx5LCB0aGVyZSdzIGF0IGxlYXN0IGEgcGxhY2Vob2xkZXIgb3Igc2tlbGV0b24uIEhtbSwgd2FpdCBhIHNlY29uZC4uLm1heWJlIGl0J3Mgbm90IGEgXCJkdW1teVwiIHBlciBzZSwgYnV0IHBlcmhhcHMgc29tZXRoaW5nIG1vcmUgbGlrZSBhIG1vY2sgaW1wbGVtZW50YXRpb24/IEl0J3MgcG9zc2libGUgSSdtIGxvb2tpbmcgZm9yIHRoZSB3cm9uZyB0ZXJtaW5vbG9neS4gTGV0J3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyB3b3VsZCBiZSBpbiB0aGUgYGRyaXZlcnMvaTNjL21hc3Rlci9gIGRpcmVjdG9yeS4gVGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCBjb3JlIEkzQyBtYXN0ZXIgZGV2aWNlIGRyaXZlciBmaWxlcy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgaXMgYSBtb2NrZWQgdmVyc2lvbiBvciBwbGFjZWhvbGRlciB0aGF0IEkgY2FuIGxvb2sgYXQgZm9yIGEgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTg4LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDkuODQxOTEyODA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2kzYy9tYXN0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFkaS1pM2MtbWFzdGVyLmNcIixcbiAgICBcImFzdDI2MDAtaTNjLW1hc3Rlci5jXCIsXG4gICAgXCJkdy1pM2MtbWFzdGVyLmNcIixcbiAgICBcImR3LWkzYy1tYXN0ZXIuaFwiLFxuICAgIFwiaTNjLW1hc3Rlci1jZG5zLmNcIixcbiAgICBcInJlbmVzYXMtaTNjLmNcIixcbiAgICBcInN2Yy1pM2MtbWFzdGVyLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogW1xuICAgIFwibWlwaS1pM2MtaGNpXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MDkuODQxOTYzNDU2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMDYzNTk1OTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkkzQyBEcml2ZXIgUGF0Y2ggQW5hbHlzaXM6IE5vdCBGdXp6YWJsZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgSTNDIGRyaXZlciBzaXR1YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHByZXR0eSBsaW1pdGVkIHNldCBvZiBoYXJkd2FyZSBkcml2ZXJzOiBgYWRpLWkzYy1tYXN0ZXIuY2AsIGBhc3QyNjAwLWkzYy1tYXN0ZXIuY2AsIGBkdy1pM2MtbWFzdGVyLmNgLCBhbmQgc28gb24sIGFsb25nIHdpdGggYG1pcGktaTNjLWhjaWAuIFRoZSBjcnVjaWFsIHBvaW50IGlzLCB0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciBJM0Mgd2l0aGluIHRoaXMga2VybmVsLiBUaGlzIGltbWVkaWF0ZWx5IHByZXNlbnRzIGEgaHVyZGxlIGZvciBmdXp6aW5nIGJlY2F1c2UgSSBjYW4ndCBlYXNpbHkgdGVzdCB0aGVzZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSB3aXRob3V0IGFuIGVtdWxhdGVkIEkzQyBjb250cm9sbGVyLlxuXG5JIHN0YXJ0ZWQgd29uZGVyaW5nIGlmIFFFTVUgZW11bGF0ZXMgYW55IG9mIHRoZXNlIGhhcmR3YXJlIGNvbnRyb2xsZXJzLiBQZXJoYXBzIHRoZSBgYXN0MjYwMC1pM2MtbWFzdGVyLmNgIGZvciBBc3BlZWQgQVNUMjYwMCBtaWdodCBiZSBlbXVsYXRlZD8gUUVNVSAqZG9lcyogZW11bGF0ZSBBU1QyNjAwLCBidXQgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgaXQgc3BlY2lmaWNhbGx5IGVtdWxhdGVzIHRoZSBJM0MgY29udHJvbGxlciB3aXRoaW4gdGhhdCBlbXVsYXRpb24uXG5cbkxldCBtZSBnbyBiYWNrIGFuZCBsb29rIGF0IHRoZSBwYXRjaCBtb3JlIGNsb3NlbHkuIEl0J3MgYWN0dWFsbHkgYSB2ZXJ5IHN0cmFpZ2h0Zm9yd2FyZCBmaXguIEl0J3MgaW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBlcnJvciBwYXRoLCBzcGVjaWZpY2FsbHkgY2xlYW5pbmcgdXAgcmVzb3VyY2VzIGlmIGBpM2NfZHJpdmVyX3JlZ2lzdGVyYCBmYWlscy4gSXQgbG9va3MgbGlrZSBpdCdzIGFkZGluZyBgaTNjX3VucmVnaXN0ZXJfbm90aWZpZXJgIGFuZCBgbWN0cF9pM2NfYnVzX3JlbW92ZV9hbGxgIGNhbGxzLiBUaGlzIGNoYW5nZSBpc24ndCBpbnRyb2R1Y2luZyBhbnkgbmV3IGZ1bmN0aW9uYWwgbG9naWMgb3IgY29tcGxleCBzdGF0ZSBtYWNoaW5lcy5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhlIHBhdGNoIGlzIG5vdCB3b3J0aCBmdXp6aW5nLiBJdCdzIGEgY2xlYW51cCwgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhbmQgZGlmZmljdWx0IHRvIHRyaWdnZXIuIFRoZXJlJ3Mgbm90aGluZyBuZXcgdG8gZnV6eiwgc28gSSB3aWxsIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1OTMyLCJPdXRwdXRUb2tlbnMiOjE2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MiwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTE6Mzg6MjIuOTA1NTYxNjI1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBmaXhlcyBhbiBlcnJvciBoYW5kbGluZyBwYXRoIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gKGBtY3RwX2kzY19tb2RfaW5pdGApLiBJdCBhZGRzIGNsZWFudXAgY2FsbHMgKGBpM2NfdW5yZWdpc3Rlcl9ub3RpZmllcmAgYW5kIGBtY3RwX2kzY19idXNfcmVtb3ZlX2FsbGApIGlmIGBpM2NfZHJpdmVyX3JlZ2lzdGVyYCBmYWlscy4gTW9kdWxlIGluaXRpYWxpemF0aW9uIGVycm9yIHBhdGhzIGFyZSBnZW5lcmFsbHkgZXhlY3V0ZWQgYXQgbW9zdCBvbmNlLCBhcmUgZGlmZmljdWx0IHRvIHRyaWdnZXIgd2l0aG91dCBzcGVjaWZpYyBmYXVsdCBpbmplY3Rpb24sIGFuZCB0aGlzIHNwZWNpZmljIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyByZWFjaGFibGUgY29yZSBsb2dpYyBvciBjb21wbGV4IHN0YXRlIG1hY2hpbmVzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGZ1enppbmcuIEZ1cnRoZXJtb3JlLCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBJM0MgY29udHJvbGxlciBpbiB0aGUga2VybmVsIHRvIGVhc2lseSB0ZXN0IHRoaXMgYnVzIHN1YnN5c3RlbSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGZpeGVzIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiAoYG1jdHBfaTNjX21vZF9pbml0YCkuIEl0IGFkZHMgY2xlYW51cCBjYWxscyAoYGkzY191bnJlZ2lzdGVyX25vdGlmaWVyYCBhbmQgYG1jdHBfaTNjX2J1c19yZW1vdmVfYWxsYCkgaWYgYGkzY19kcml2ZXJfcmVnaXN0ZXJgIGZhaWxzLiBNb2R1bGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgcGF0aHMgYXJlIGdlbmVyYWxseSBleGVjdXRlZCBhdCBtb3N0IG9uY2UsIGFyZSBkaWZmaWN1bHQgdG8gdHJpZ2dlciB3aXRob3V0IHNwZWNpZmljIGZhdWx0IGluamVjdGlvbiwgYW5kIHRoaXMgc3BlY2lmaWMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb3JlIGxvZ2ljIG9yIGNvbXBsZXggc3RhdGUgbWFjaGluZXMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gZnV6emluZy4gRnVydGhlcm1vcmUsIHRoZXJlIGlzIG5vIHNvZnR3YXJlLWVtdWxhdGVkIEkzQyBjb250cm9sbGVyIGluIHRoZSBrZXJuZWwgdG8gZWFzaWx5IHRlc3QgdGhpcyBidXMgc3Vic3lzdGVtIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowsf8c7[1] Phase: Running StartedAt: 2026-07-14 11:39:11 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsf8c7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-14 11:39:11 +0000 UTC FinishedAt: 2026-07-14 11:39:16 +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,}