Name: series-workflowvjhf8 Phase: Succeeded StartedAt: 2026-07-28 00:14:19 +0000 UTC FinishedAt: 2026-07-28 05:21:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[0] Phase: Succeeded StartedAt: 2026-07-28 00:14:19 +0000 UTC FinishedAt: 2026-07-28 00:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 00:14:19 +0000 UTC FinishedAt: 2026-07-28 00:54:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bd0e9289e2642f6a5c54faad304ce0f41e926d22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "DMA_SHARED_BUFFER", "PAGE_POOL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bd0e9289e2642f6a5c54faad304ce0f41e926d22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "DMA_SHARED_BUFFER", "PAGE_POOL" ], "series_id": "9e60fd40-f89d-44d7-9eda-ca7f4ef03e59" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__zerocopy_sg_from_iter", "skb_zerocopy_iter_stream" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7RE1BX1NIQVJFRF9CVUZGRVImIzM0OywKICAgICYjMzQ7UEFHRV9QT09MJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgwYWYxZmNkODhlZWFiYjVhYTY2NmI2N2FhY2M2YmM2NzYxNTg3ZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAwMDo1MDoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xuaW5kZXggYzI4NWM2NDY1OTIzZTQuLjE3M2I1ZDk3YmQ0MDlhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGF0YWdyYW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xuQEAgLTcxMiw2ICYjNDM7NzEyLDkgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIFx0c2l6ZV90IHZpcnRfYWRkciwgc2l6ZSwgb2ZmO1xuIFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4gXG4mIzQzO1x0aWYgKGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxuJiM0MztcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzQzO1xuIFx0LyogRGV2bWVtIGZpbGxpbmcgd29ya3MgYnkgdGFraW5nIGFuIElPVkVDIGZyb20gdGhlIHVzZXIgd2hlcmUgdGhlXG4gXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXG4gXHQgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7RE1BX1NIQVJFRF9CVUZGRVImIzM0OywKICAgICYjMzQ7UEFHRV9QT09MJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgwYWYxZmNkODhlZWFiYjVhYTY2NmI2N2FhY2M2YmM2NzYxNTg3ZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAwMDo1MDoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RhdGFncmFtLmMgYi9uZXQvY29yZS9kYXRhZ3JhbS5jCmluZGV4IGMyODVjNjQ2NTkyM2U0Li4xNzNiNWQ5N2JkNDA5YSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGF0YWdyYW0uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kYXRhZ3JhbS5jCkBAIC03MTIsNiAmIzQzOzcxMiw5IEBAIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwKIAlzaXplX3QgdmlydF9hZGRyLCBzaXplLCBvZmY7CiAJc3RydWN0IG5ldF9pb3YgKm5pb3Y7CiAKJiM0MzsJaWYgKGkgJmFtcDsmYW1wOyBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkKJiM0MzsJCXJldHVybiAtRUZBVUxUOwomIzQzOwogCS8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZQogCSAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG8KIAkgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBDb3JlIERhdGFncmFtIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIGBuZXQvY29yZS9kYXRhZ3JhbS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIHByZXR0eSBmdW5kYW1lbnRhbCBmb3IgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uLgoKVGhlIGludGVyZXN0aW5nIGJpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBjaGVjazoKCmBgYGMKCWlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpCgkJcmV0dXJuIC1FRkFVTFQ7CmBgYAoKU28sIGlmIGBpYCAod2hhdGV2ZXIgdGhhdCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dCDigJMgcHJvYmFibHkgYW4gaW5kZXggb3Igc29tZSBraW5kIG9mIGNvdW50ZXIgd2l0aGluIHRoZSBsb29wKSBpcyBub24temVybywgYW5kIGBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKWAgaXMgdHJ1ZSwgd2UgZ2V0IGEgLUVGQVVMVC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmRpdGlvbmFsIGlzIGFpbWluZyB0byBwcmV2ZW50LiAmIzM0O3NrYl9mcmFnc19yZWFkYWJsZSYjMzQ7IGlzIHRoZSBrZXkgaGVyZS4gSXQmIzM5O3MgdXNlZCB0byBjaGVjayBpZiBmcmFncyB3aXRoaW4gdGhlIHNrYiBoYXZlIHJlYWRhYmxlIHBlcm1pc3Npb25zLCBzbyB0aGlzIHNlZW1zIHRvIGJlIGFkZGluZyBhIHJlc3RyaWN0aW9uIHRvIGhvdyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzIHdpdGggc2tiIGZyYWdzLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBjbGVhcmx5IG1vZGlmeWluZyB0aGUgZGF0YWdyYW0gaGFuZGxpbmcgbG9naWMgd2l0aGluIHRoZSBuZXR3b3JrIGNvcmUuIEkgbmVlZCB0byBjYXJlZnVsbHkgYW5hbHl6ZSB0aGUgb3JpZ2luYWwgY29kZSwgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCAqd2h5KiB0aGlzIHBhcnRpY3VsYXIgY2hlY2sgaXMgYmVpbmcgaW50cm9kdWNlZC4gV2hhdCBzY2VuYXJpbyBpcyB0aGlzIGd1YXJkaW5nIGFnYWluc3Q/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdHk/IERhdGEgY29ycnVwdGlvbj8gUGVyZm9ybWFuY2UgaXNzdWU/IEFuZCB3aGF0JiMzOTtzIHRoZSBzZW1hbnRpYyBtZWFuaW5nIG9mIGBpYCBpbiB0aGlzIGZ1bmN0aW9uPwoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgb2YgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCB0byBkZXRlcm1pbmUgd2hhdCBpdCYjMzk7cyBzdXBwb3NlZCB0byBkbyBhbmQgaG93IHRoZSBwYXRjaCBhZmZlY3RzIGl0LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGNoZWNrIHRvIGFzc2VzcyBpdHMgaW1wYWN0IG9uIG92ZXJhbGwgbmV0d29yayBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3plcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2RhdGFncmFtLmM9NzA2PXN0YXRpYyBpbnRcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzA3Onplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzA4LVx0XHRcdCAgICAgIGludCBsZW5ndGgsXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYwLVx0ZWxzZSBpZiAoYmluZGluZylcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYxOlx0XHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShza2IsIGZyb20sIGxlbmd0aCwgYmluZGluZyk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2Mi1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEaWdnaW5nIGludG8gdGhlIFplcm8tQ29weSBEYXRhIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgbm90ZSBpcyB0aGF0IGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGFuIGludGVybmFsIGhlbHBlciwgbGlrZWx5IHNwZWNpZmljIHRvIHRoZSBjb21waWxhdGlvbiB1bml0IGl0JiMzOTtzIGRlZmluZWQgaW4uIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3Mgbm90IG1lYW50IHRvIGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tIG91dHNpZGUgdGhpcyBzcGVjaWZpYyBtb2R1bGUuIEFuZCBpdCBpcyBjYWxsZWQgYnkgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4KCk5vdywgdGhlIG5hdHVyYWwgcXVlc3Rpb24gaXMsICYjMzQ7V2hlcmUgKmVsc2UqIGlzIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgYmVpbmcgdXNlZD8mIzM0OyBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyB6ZXJvLWNvcHkgZGF0YSBwYXRoLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGF0IGZ1bmN0aW9uIHRvIGdhaW4gYSBjbGVhcmVyIHBpY3R1cmUuIEl0JiMzOTtzIHRpbWUgdG8gZmluZCB0aGUgY2FsbCBzaXRlcyBmb3IgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjItXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjM6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzczLXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3NDpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cdTAwM2Vzaywgc2tiLCBcdTAwMjZtc2ctXHUwMDNlbXNnX2l0ZXIsIGxlbixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3NS1cdFx0XHRcdCAgICAgICBOVUxMKTtcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTcwNz16ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc0OTppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc1MC1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc0LX1cbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzc1OkVYUE9SVF9TWU1CT0woX196ZXJvY29weV9zZ19mcm9tX2l0ZXIpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03ODc9aW50IHplcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTQtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc5NTpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc5Ni19XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xOTMzLVxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcdGVyciA9IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sXG5uZXQvY29yZS9za2J1ZmYuYy0xOTM1LVx0XHRcdFx0ICAgICAgYmluZGluZyk7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTgwPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9maWxsX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cdGlmICh6Y29weSlcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo4ODpcdFx0cmV0dXJuIF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgTlVMTCwgc2tiLFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTg5LVx0XHRcdFx0XHQgICAgICAgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yMzktXHQvKiBJZiAmIzM5O3ZzayYjMzk7ICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI0MDpcdCAqIHdpbGwgbmV2ZXIgY2FsbCAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyBiZWxvdyB3aXRob3V0XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQxLVx0ICogc2V0dGluZyBza2Igb3duZXIgaW4gJiMzOTtza2Jfc2V0X293bmVyX3coKSYjMzk7LiBUaGUgb25seSBjYXNlXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0Ni1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XHQvKiBTZXQgb3duZXIgaGVyZSwgYmVjYXVzZSAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyB1c2VzXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVx0ICogb3duZXIgb2Ygc2tiIHdpdGhvdXQgY2hlY2sgdG8gdXBkYXRlICYjMzk7c2tfd21lbV9hbGxvYyYjMzk7LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRGF0YSBGbG93OiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGFuZCBpdHMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgaXMgd2hlbiBgYmluZGluZ2AgaXNuJiMzOTt0IGEgbnVsbCBwb2ludGVyLiBUaGF0JiMzOTtzIHRoZSB0cmlnZ2VyLiBXaGVuIHRoYXQgaGFwcGVucywgdGhpcyBgYmluZGluZ2AgdmFyaWFibGUgZ2V0cyBwYXNzZWQgZGlyZWN0bHkgdG8gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgd2hlbiBgYmluZGluZ2AgaXMgaW5kZWVkICpub3QqIE5VTEwuIEdvdHRhIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgd2l0aCB0aGF0IGNvbmRpdGlvbi4gRGlnZ2luZyBpbnRvIHRoZSBjb2RlLCBhbmQgSSBzZWUgaXQhIFJpZ2h0IHRoZXJlIGluIGBuZXQvY29yZS9za2J1ZmYuY2AgYXQgbGluZSAxOTM0LCBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBtYWtlcyB0aGUgY2FsbDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgJmFtcDttc2ctJmd0O21zZ19pdGVyLCBsZW4sIGJpbmRpbmcpYC4gUGVyZmVjdC4gU28gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgaXMgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGF0JiMzOTtzIHRoZSByZWxldmFudCBwYXRoIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2tidWZmLmg9MTc3MT1zdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3Ny1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3ODppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cdFx0XHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xOTEwPUVYUE9SVF9TWU1CT0xfR1BMKG1zZ196ZXJvY29weV91YnVmX29wcyk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxubmV0L2NvcmUvc2tidWZmLmM6MTkxMjppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTMtXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTk0OS19XG5uZXQvY29yZS9za2J1ZmYuYzoxOTUwOkVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbSk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxuLS1cbm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG4tLVxubmV0L2lwdjQvdGNwLmMtMTMzOC1cbm5ldC9pcHY0L3RjcC5jOjEzMzk6XHRcdFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHNrLCBza2IsIG1zZywgY29weSwgdWFyZyxcbm5ldC9pcHY0L3RjcC5jLTEzNDAtXHRcdFx0XHRcdFx0ICAgICAgIGJpbmRpbmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgdGhlIERhdGEgRmxvdzogYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBmdW5jdGlvbiBjYWxsLiBJdCYjMzk7cyBjbGVhcmx5IGltcG9ydGFudCwgYW5kIGZyb20gdGhlIGluaXRpYWwgY29udGV4dCwgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uLiBUaGlzIG1ha2VzIHNlbnNlOyBzdHJlYW0tYmFzZWQgcHJvdG9jb2xzIGxpa2UgVENQIGFyZSBuYXR1cmFsIGNhbmRpZGF0ZXMgZm9yIHplcm8tY29weSBvcGVyYXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHVzZXIgZGF0YS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgKmhvdyogdGhlIGBiaW5kaW5nYCBpcyBvYnRhaW5lZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIEkgbmVlZCB0byB0cmFjayB0aGF0IGRvd247IGl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIFVuZGVyc3RhbmRpbmcgaG93IHRoYXQgYmluZGluZyBpcyBtYW5hZ2VkIHdpbGwgaWxsdW1pbmF0ZSB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBUaGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgc29ja2V0IGJ1ZmZlciAoYHNrYmApIGFuZCB0aGF0ICYjMzk7YmluZGluZyYjMzk7IGlzIHRoZSBjb3JlIG9mIHdoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaW50ZXJhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JpbmRpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwLmMtMTExNy17XG5uZXQvaXB2NC90Y3AuYzoxMTE4Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBOVUxMO1xubmV0L2lwdjQvdGNwLmMtMTExOS1cdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTExNTgtXHRcdFx0aWYgKCFzb2NrY19lcnIgXHUwMDI2XHUwMDI2IHNvY2tjLmRtYWJ1Zl9pZCkge1xubmV0L2lwdjQvdGNwLmM6MTE1OTpcdFx0XHRcdGJpbmRpbmcgPSBuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHNrLCBzb2NrYy5kbWFidWZfaWQpO1xubmV0L2lwdjQvdGNwLmM6MTE2MDpcdFx0XHRcdGlmIChJU19FUlIoYmluZGluZykpIHtcbm5ldC9pcHY0L3RjcC5jOjExNjE6XHRcdFx0XHRcdGVyciA9IFBUUl9FUlIoYmluZGluZyk7XG5uZXQvaXB2NC90Y3AuYzoxMTYyOlx0XHRcdFx0XHRiaW5kaW5nID0gTlVMTDtcbm5ldC9pcHY0L3RjcC5jLTExNjMtXHRcdFx0XHRcdGdvdG8gb3V0X2Vycjtcbi0tXG5uZXQvaXB2NC90Y3AuYy0xMzM5LVx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXG5uZXQvaXB2NC90Y3AuYzoxMzQwOlx0XHRcdFx0XHRcdCAgICAgICBiaW5kaW5nKTtcbm5ldC9pcHY0L3RjcC5jLTEzNDEtXHRcdFx0aWYgKGVyciA9PSAtRU1TR1NJWkUgfHwgZXJyID09IC1FRVhJU1QpIHtcbi0tXG5uZXQvaXB2NC90Y3AuYy0xNDE5LVx0XHRuZXRfemNvcHlfcHV0KHVhcmcpO1xubmV0L2lwdjQvdGNwLmM6MTQyMDpcdGlmIChiaW5kaW5nKVxubmV0L2lwdjQvdGNwLmM6MTQyMTpcdFx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoYmluZGluZyk7XG5uZXQvaXB2NC90Y3AuYy0xNDIyLVx0cmV0dXJuIGNvcGllZCAmIzQzOyBjb3BpZWRfc3luO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTE0MzgtXHR9XG5uZXQvaXB2NC90Y3AuYzoxNDM5Olx0aWYgKGJpbmRpbmcpXG5uZXQvaXB2NC90Y3AuYzoxNDQwOlx0XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9pcHY0L3RjcC5jLTE0NDEtXG4tLVxubmV0L2lwdjQvdGNwLmM9MjQ5OT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2RtYWJ1ZihzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdGNwLmMtMjU5OC1cdFx0XHRcdGRtYWJ1Zl9jbXNnLmZyYWdfdG9rZW4gPSB0Y3BfeGFfcG9vbC50b2tlbnNbdGNwX3hhX3Bvb2wuaWR4XTtcbm5ldC9pcHY0L3RjcC5jOjI1OTk6XHRcdFx0XHRkbWFidWZfY21zZy5kbWFidWZfaWQgPSBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nX2lkKG5pb3YpO1xubmV0L2lwdjQvdGNwLmMtMjYwMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIGEgRGV2bWVtIFRDUCBQYXRjaCoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyB0aGlzIG5ldyBjaGVjazogYGlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHJldHVybiAtRUZBVUxUO2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGlzIGlzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBkZXZtZW0gVENQLCBvciBkZXZpY2UgbWVtb3J5IFRDUCwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gZm9yIFRDUCBvbiBzeXN0ZW1zIHdpdGggZGlyZWN0IG1lbW9yeSBhY2Nlc3MuJiMzNDsKCkdpdmVuIHRoYXQgaXQmIzM5O3MgaW5qZWN0aW5nIGFuIGVycm9yIHJldHVybiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IG9yIGFuIGVkZ2UgY2FzZSB3aXRoaW4gdGhlIHplcm9jb3B5IG9wZXJhdGlvbiB3aGVuIHVzaW5nIGRldmljZSBtZW1vcnkuIFRoZSBjaGVjayB3aXRoIGBpYCBhbmQgYHNrYl9mcmFnc19yZWFkYWJsZShza2IpYCBpcyB3aGF0JiMzOTtzIHBpcXVpbmcgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBkaWcgaW50byB3aHkgdGhlIHBhdGNoIGF1dGhvciBpcyB1c2luZyBib3RoIG9mIHRoZXNlIHRvIGRldGVybWluZSB0aGUgbG9naWMsIGJ1dCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBwcm90ZWN0IGFnYWluc3Qgc29tZSBraW5kIG9mIGNvbmN1cnJlbnQgYWNjZXNzIG9yIGJ1ZmZlciBjb3JydXB0aW9uIHdoZW4gdGhlIFNLQiBpcyB1c2luZyBmcmFncy4gSSBzaG91bGQgYWxzbyBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIHJlcXVpcmVkIGZvciBkZXZtZW0gVENQIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgY2hlY2sgZml0cyBpbiB0aGUgZWNvc3lzdGVtLiBJIHNob3VsZCBnbyBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBleGlzdGluZyBjb2RlYmFzZSB0byBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0X2Rldm1lbV9nZXRfYmluZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXZtZW0uYz0zNzI9dm9pZCBuZXRfZGV2bWVtX3B1dF9uZXRfaW92KHN0cnVjdCBuZXRfaW92ICpuaW92KVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTM3Ni1cbm5ldC9jb3JlL2Rldm1lbS5jOjM3NzpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kZXZtZW0uYy0zNzgtXHRcdFx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZClcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xNTE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmg6MTUyOm5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKTtcbm5ldC9jb3JlL2Rldm1lbS5oLTE1My1zdHJ1Y3QgbmV0X2lvdiAqXG4tLVxubmV0L2NvcmUvZGV2bWVtLmg9MjIzPXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmg6MjI0Om5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKVxubmV0L2NvcmUvZGV2bWVtLmgtMjI1LXtcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTExNTgtXHRcdFx0aWYgKCFzb2NrY19lcnIgXHUwMDI2XHUwMDI2IHNvY2tjLmRtYWJ1Zl9pZCkge1xubmV0L2lwdjQvdGNwLmM6MTE1OTpcdFx0XHRcdGJpbmRpbmcgPSBuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHNrLCBzb2NrYy5kbWFidWZfaWQpO1xubmV0L2lwdjQvdGNwLmMtMTE2MC1cdFx0XHRcdGlmIChJU19FUlIoYmluZGluZykpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwMgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBgZGV2bWVtLmNgIEFieXNzKioKCk9rYXksIHNvIHdlIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgbWVtb3J5IGFjY2VzcyBtZWNoYW5pc20gd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgbmV0L2NvcmUvZGV2bWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRoZSBsb3ctbGV2ZWwgc3R1ZmYgdG8gbGl2ZSwgdGhlIGRyaXZlci1zcGVjaWZpYyBtZW1vcnkgbWFwcGluZyBhbmQgYWNjZXNzIHJvdXRpbmVzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBwaHlzaWNhbCBhZGRyZXNzZXMsIG1lbW9yeSByZWdpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgcmVzdHJpY3Rpb25zIG9yIHBlY3VsaWFyaXRpZXMuCgpOZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWxlLiBUaGVyZSBhcmUgbGlrZWx5IHNvbWUga2VybmVsIGNvbmZpZyBmbGFncyB0aGF0IGNvbnRyb2wgdGhlIGVuYWJsaW5nLCBkaXNhYmxpbmcsIGFuZCBzcGVjaWZpYyBiZWhhdmlvciBvZiBgZGV2bWVtLmNgLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGUgZnVuY3Rpb25hbGl0eS4gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgdG8gY29uc2lkZXI/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyBpZiBpdCBpcyBjb25maWd1cmVkIGEgY2VydGFpbiB3YXk/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldm1lbS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9NDg9b2JqLSQoQ09ORklHX05FVF9URVNUKSAmIzQzOz0gbmV0X3Rlc3Qub1xubmV0L2NvcmUvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9ERVZNRU0pICYjNDM7PSBkZXZtZW0ub1xubmV0L2NvcmUvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX0RFQlVHX05FVCkgJiM0Mzs9IGxvY2tfZGVidWcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjQ3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19ORVRfREVWTUVNYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgZm9yIHNvbWV0aGluZyBJJiMzOTttIHdvcmtpbmcgb24uIFRoYXQmIzM5O3Mgbm90IGVudGlyZWx5IHN1cnByaXNpbmcsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgaXQmIzM5O3MgYmVlbiB0cmlnZ2VyZWQuIExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIGlzIHRoZSBgbmV0L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBuZXR3b3JrLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9uIHRoaXMgb3B0aW9uLCB3aGF0IGZlYXR1cmVzIGl0IGVuYWJsZXMsIGFuZCB3aGF0IG1vZHVsZXMgYXJlIG5vdyByZWx5aW5nIG9uIGl0LiBLbm93aW5nIHRoaXMgd2lsbCBjbGFyaWZ5IHRoZSBsYXJnZXIgcGljdHVyZS4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgZGVwZW5kZW5jeSwgYW5kIG1ha2UgYW4gaW5mb3JtZWQgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfREVWTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTY2PWNvbmZpZyBTS0JfRVhURU5TSU9OU1xuLS1cbm5ldC9LY29uZmlnLTY4LVxubmV0L0tjb25maWc6Njk6Y29uZmlnIE5FVF9ERVZNRU1cbm5ldC9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTMwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBhIEtlcm5lbCBDb25maWd1cmF0aW9uIEZsYWcqKgoKT2theSwgc28gYENPTkZJR19ORVRfREVWTUVNYCBpcyBkZWZpbmVkIGFzICYjMzQ7eSYjMzQ7LiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW5mbHVlbmNpbmcgdGhpcyBzZXR0aW5nLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbmV0L0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIHplcm8gaW4gYXJvdW5kIGxpbmUgNjksIHRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzLCBleHBsYW5hdGlvbnMsIGFuZCBwb3RlbnRpYWxseSB0aGUgY29udGV4dCBmb3IgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHNlZSAqd2h5KiB0aGlzIGlzIHNldCwgd2hhdCBvdGhlciBvcHRpb25zIGl0IGRlcGVuZHMgb24gb3IgYWZmZWN0cywgYW5kIHVsdGltYXRlbHksIHdoYXQgaW1wbGljYXRpb25zIHRoaXMgaGFzIGZvciB0aGUgbmV0d29yayBzdWJzeXN0ZW0uIFRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vaywgZXNwZWNpYWxseSBnaXZlbiBteSBleHBlcmllbmNlIHdpdGguLi4gd2VsbCwgZXZlcnl0aGluZyEgTGV0JiMzOTtzIGdldCB0byB0aGUgcm9vdCBvZiB0aGUgbWF0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdGNvbmZpZyBORVRfUkVESVJFQ1RcbiAgNjE6XHRcdGJvb2xcbiAgNjI6XHRcbiAgNjM6XHRjb25maWcgU0tCX0RFQ1JZUFRFRFxuICA2NDpcdFx0Ym9vbFxuICA2NTpcdFxuICA2NjpcdGNvbmZpZyBTS0JfRVhURU5TSU9OU1xuICA2NzpcdFx0Ym9vbFxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBORVRfREVWTUVNXG4gIDcwOlx0XHRkZWZfYm9vbCB5XG4gIDcxOlx0XHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbiAgNzI6XHRcdGRlcGVuZHMgb24gRE1BX1NIQVJFRF9CVUZGRVJcbiAgNzM6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gIDc0Olx0XG4gIDc1Olx0Y29uZmlnIE5FVF9TSEFQRVJcbiAgNzY6XHRcdGJvb2xcbiAgNzc6XHRcbiAgNzg6XHRjb25maWcgTkVUX0NSQzMyQ1xuICA3OTpcdFx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTU2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBORVRfREVWTUVNYCBoZXJlLCBhbmQgSSYjMzk7bSBpbW1lZGlhdGVseSBub3RpY2luZyBhIGRlcGVuZGVuY3k6IGl0JiMzOTtzIGJ1aWx0IHVwb24gYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3Mgbm90IGVudGlyZWx5IHVuZXhwZWN0ZWQsIGdpdmVuIHRoZSBuYXR1cmUgb2YgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgYW5kIHRoZSBuZWVkIGZvciBlZmZpY2llbnQgYnVmZmVyIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHN0YWNrLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGNsYXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBgRE1BX1NIQVJFRF9CVUZGRVJgIGlzIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBsaWtlbHkgYmFrZWQgaW4gYmFzZWQgb24gcGxhdGZvcm0gc3VwcG9ydCwgb3IgaWYgaXQgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxpbmcgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gS25vd2luZyB0aGlzIHVwZnJvbnQgd2lsbCBoYXZlIGEgdGFuZ2libGUgaW1wYWN0IGluIG91ciBidWlsZCBwcm9jZXNzIGFuZCBhbnkgcmVsYXRlZCBkZWJ1ZyBjeWNsZXMuIEtub3dpbmcgdGhpcywgSSBjYW4gYmVnaW4gdG8gd29yayBvdXQgdGhlIG9wdGltYWwgY29uZmlnIGZvciBteSBuZXR3b3JrIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRE1BX1NIQVJFRF9CVUZGRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL0tjb25maWc9MjEzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jhc2UvcmVnbWFwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTIxNC1cbmRyaXZlcnMvYmFzZS9LY29uZmlnOjIxNTpjb25maWcgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTIxNi1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI4NAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgYSBDb25maWd1cmF0aW9uIEZsYWcqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIGJvb2xlYW4sIGEgY29uZmlndXJhdGlvbiBmbGFnIHNwZWNpZmljYWxseSwgYW5kIGl0JiMzOTtzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgKnVucHJvbXB0ZWQqLiBUaGF0IG1lYW5zIGl0JiMzOTtzIHByb2JhYmx5IGJlaW5nIHNldCBhcyBhIGNvbnNlcXVlbmNlIG9mICpzb21ldGhpbmcgZWxzZSogYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB0aGUgdXNlciBpcyBleHBsaWNpdGx5IGNob29zaW5nLCBhdCBsZWFzdCBub3QgZGlyZWN0bHkuIEl0JiMzOTtzIGRlcml2ZWQuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQmIzM5O3MgdGhlIGRlcGVuZGVuY3k/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGFjdHVhbGx5IHB1bGxpbmcgdGhlIHRyaWdnZXIgb24gYERNQV9TSEFSRURfQlVGRkVSYD8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgcmVsZXZhbnQgY29uZmlnIGZpbGVzLCBodW50IGRvd24gdGhlIGNvbmRpdGlvbmFscywgYW5kIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIHRoYXQgbGVhZHMgdG8gdGhpcyBmbGFnIGJlaW5nIHNldC4gS25vd2luZyB3aGF0ICpjYXVzZXMqIGl0IHRvIGJlIHNldCBpcyBjcml0aWNhbC4gSXMgaXQgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24/IEEgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3k/IE9yIHBlcmhhcHMgYSBjb21wYXRpYmlsaXR5IHJlcXVpcmVtZW50PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgZGVyaXZlZCBzZXR0aW5nIGJlZm9yZSBJIGNhbiBiZSBjb25maWRlbnQgaW4gaXRzIHByb3BlciB1c2UuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc2VlIHdoYXQmIzM5O3MgY29ubmVjdGVkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0PTY1PUFueSBleHBvcnRlcnMgb3IgdXNlcnMgb2YgdGhlIGRtYS1idWYgYnVmZmVyIHNoYXJpbmcgZnJhbWV3b3JrIG11c3QgaGF2ZSBhXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3Q6NjY6JiMzOTtzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVImIzM5OyBpbiB0aGVpciByZXNwZWN0aXZlIEtjb25maWdzLlxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0LTY3LVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnPTY9Y29uZmlnIERSTV9BQ0NFTF9IQUJBTkFMQUJTXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL0tjb25maWctMTItXHRzZWxlY3QgSFdNT05cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnOjEzOlx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZy0xNC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTQ9Y29uZmlnIFNZTkNfRklMRVxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTYtXHRkZWZhdWx0IG5cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjc6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTgtXHRoZWxwXG4tLVxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9NTI9Y29uZmlnIERNQUJVRl9LVU5JVF9URVNUXG4tLVxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNTQtXHRkZXBlbmRzIG9uIEtVTklUXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo1NTpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNTYtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTYwPW1lbnVjb25maWcgRE1BQlVGX0hFQVBTXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02MS1cdGJvb2wgXCYjMzQ7RE1BLUJVRiBVc2VybGFuZCBNZW1vcnkgSGVhcHNcJiMzNDtcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjYyOlx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02My1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz04PW1lbnVjb25maWcgRFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTMtXHRzZWxlY3QgSTJDXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNDpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTUtXHRzZWxlY3QgU1lOQ19GSUxFXG4tLVxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWc9Nj1jb25maWcgVEVHUkFfSE9TVDFYXG4tLVxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWctOC1cdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnOjk6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnLTEwLVx0c2VsZWN0IFRFR1JBX0hPU1QxWF9DT05URVhUX0JVU1xuLS1cbmRyaXZlcnMvaWlvL0tjb25maWc9MTU9Y29uZmlnIElJT19CVUZGRVJcbmRyaXZlcnMvaWlvL0tjb25maWctMTYtXHRib29sIFwmIzM0O0VuYWJsZSBidWZmZXIgc3VwcG9ydCB3aXRoaW4gSUlPXCYjMzQ7XG5kcml2ZXJzL2lpby9LY29uZmlnOjE3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2lpby9LY29uZmlnLTE4LVx0aGVscFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTI9bWVudWNvbmZpZyBJTkZJTklCQU5EXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNy1cdGRlcGVuZHMgb24gIUFMUEhBXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy05LVx0c2VsZWN0IElSUV9QT0xMXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NDQ9Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00Ny1cdGRlcGVuZHMgb24gTU1VXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0ODpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDktXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZz0zOT1jb25maWcgSU9NTVVGRF9URVNUXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDQtXHRkZXBlbmRzIG9uIElPTU1VX1BUX0FNRFYxPXkgfHwgSU9NTVVGRD1JT01NVV9QVF9BTURWMVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6NDU6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQ2LVx0c2VsZWN0IElPTU1VRkRfRFJJVkVSXG4tLVxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc9Mz1jb25maWcgVklERU9CVUYyX0NPUkVcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjQ6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTUtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTEzPWNvbmZpZyBWSURFT0JVRjJfRE1BX0NPTlRJR1xuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTE2LVx0c2VsZWN0IFZJREVPQlVGMl9NRU1PUFNcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjE3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTE5PWNvbmZpZyBWSURFT0JVRjJfVk1BTExPQ1xuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTIyLVx0c2VsZWN0IFZJREVPQlVGMl9NRU1PUFNcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjIzOlx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yNC1cbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZz0xPWNvbmZpZyBWSURFT19URUdSQV9WREVcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy02LVx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnOjc6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnLTgtXHRzZWxlY3QgSU9NTVVfSU9WQVxuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnPTMwMT1jb25maWcgUUNPTV9GQVNUUlBDXG4tLVxuZHJpdmVycy9taXNjL0tjb25maWctMzA0LVx0ZGVwZW5kcyBvbiBSUE1TR1xuZHJpdmVycy9taXNjL0tjb25maWc6MzA1Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMDYtXHRzZWxlY3QgUUNPTV9TQ01cbi0tXG5kcml2ZXJzL3RlZS9LY29uZmlnPTM9bWVudWNvbmZpZyBURUVcbi0tXG5kcml2ZXJzL3RlZS9LY29uZmlnLTYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG5kcml2ZXJzL3RlZS9LY29uZmlnOjc6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvdGVlL0tjb25maWctOC1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTE5Mj1jb25maWcgVVNCX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5MzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnPTE0NT1jb25maWcgWEVOX0dOVERFVl9ETUFCVUZcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0Ny1cdGRlcGVuZHMgb24gWEVOX0dOVERFViBcdTAwMjZcdTAwMjYgWEVOX0dSQU5UX0RNQV9BTExPQ1xuZHJpdmVycy94ZW4vS2NvbmZpZzoxNDg6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMveGVuL0tjb25maWctMTQ5LVx0aGVscFxuLS1cbnNhbXBsZXMvS2NvbmZpZz0yMzA9Y29uZmlnIFNBTVBMRV9WRklPX01ERVZfTUJPQ0hTXG4tLVxuc2FtcGxlcy9LY29uZmlnLTIzMy1cdHNlbGVjdCBWRklPX01ERVZcbnNhbXBsZXMvS2NvbmZpZzoyMzQ6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbnNhbXBsZXMvS2NvbmZpZy0yMzUtXHRoZWxwXG4tLVxuc291bmQvc29jL2ZzbC9LY29uZmlnPTY9Y29uZmlnIFNORF9TT0NfRlNMX0FTUkNcbi0tXG5zb3VuZC9zb2MvZnNsL0tjb25maWctOC1cdGRlcGVuZHMgb24gSEFTX0RNQVxuc291bmQvc29jL2ZzbC9LY29uZmlnOjk6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZy0xMC1cdHNlbGVjdCBSRUdNQVBfTU1JT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM2NAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIE9wdGltYWwgUmVzb3VyY2UgQWxsb2NhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBzeXN0ZW0sIGFuZCB0aGUgbmVlZCBmb3IgYFBBR0VfUE9PTGAgaGFzIGNvbWUgdG8gbXkgYXR0ZW50aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0cmFjZSBiYWNrIHRoZSBkZXBlbmRlbmN5IGNoYWluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbXBvbmVudHMsIG1vZHVsZXMsIG9yIHN1YnN5c3RlbXMgYXJlIGxldmVyYWdpbmcgdGhpcyBgUEFHRV9QT09MYC4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBrbm93aW5nIGl0JiMzOTtzICp1c2VkKiwgYnV0ICpob3cqIGl0JiMzOTtzIHNlbGVjdGVkIOKAkyB3aGF0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgZW52aXJvbm1lbnRhbCBmYWN0b3JzLCBvciBldmVuIGR5bmFtaWMgcnVudGltZSBkZWNpc2lvbnMgZGljdGF0ZSBpdHMgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHBpZWNlcyBvZiBjb2RlIGFjdHVhbGx5IHBlcmZvcm0gdGhlIHNlbGVjdGlvbiwgd2hhdCBjcml0ZXJpYSBhcmUgdXNlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgY2hvaWNlLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgdG8gZXZhbHVhdGUgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBhbmQgYXZvaWQgdW5leHBlY3RlZCBtZW1vcnkgYWxsb2NhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xuLS1cbm5ldC9LY29uZmlnLTQ5MC1cbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXG5uZXQvS2NvbmZpZy00OTItXHRib29sXG5uZXQvS2NvbmZpZy00OTMtXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xubmV0L0tjb25maWctNDk1LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjc3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGl0OgoKKipBbmFseXppbmcgdGhlIFBBR0VfUE9PTCBTZWxlY3Rpb24qKgoKQWxyaWdodCwgbXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgaXMgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHNlbGVjdGluZyBgUEFHRV9QT09MYC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYTsgdW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBtZWNoYW5pc20gaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBhZ2luZy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjYWxscywgY29uZGl0aW9ucywgb3IgYWxnb3JpdGhtcyB0aGF0IHJlc3VsdCBpbiB0aGUgc2VsZWN0aW9uIG9mIHRoaXMgcGFydGljdWxhciBwb29sLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBzZXF1ZW5jZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBmbGFncyBvciBwYXJhbWV0ZXJzIGluZmx1ZW5jaW5nIHRoZSBjaG9pY2U/IElzIHRoaXMgYSBkZWZhdWx0IG9wdGlvbiwgb3IgaXMgaXQgc2VsZWN0ZWQgYmFzZWQgb24gc29tZSBoZXVyaXN0aWNzPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFzIGZhciBhcyBwb3NzaWJsZSB0byBncmFzcCB0aGUgdW5kZXJseWluZyBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnkgY29uZGl0aW9uYWxzLCBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBvciBkZXBlbmRlbmNpZXMgdGhhdCBsZWFkIHRvIHRoaXMgc2VsZWN0aW9uLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHBvb2wgaXMgYmVpbmcgY2hvc2VuIGluIHRoaXMgcGFydGljdWxhciBjb250ZXh0LiBLbm93aW5nIHRoZSAmIzM0O3doeSYjMzQ7IGlzIGtleSB0byBvcHRpbWl6YXRpb24gYW5kIGRlYnVnZ2luZyBkb3duIHRoZSBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cdHNlbGVjdCBORVRfU0hBUEVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cdHNlbGVjdCBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiA2NEJJVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1Bcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXHRzZWxlY3QgRklYRURfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7Q29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcJiMzNDsgaWYgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cdHNlbGVjdCBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cdHNlbGVjdCBWQ0FQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXHRzZWxlY3QgTUZEX1NZU0NPTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTQyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIGZvciBaZXJvLUNvcHkgYW5kIFRlc3RhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgaW50ZXJhY3QsIHBhcnRpY3VsYXJseSBpbiByZWxhdGlvbiB0byB6ZXJvLWNvcHkgbmV0d29yayBvcGVyYXRpb25zIGFuZCBvdXIgdGVzdGluZyBzdHJhdGVneS4gSSYjMzk7dmUgYmVlbiB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdhbnQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBjb3ZlcmluZyBhbGwgYmFzZXMuIEl0IHNlZW1zIHRoYXQgYE5FVF9ERVZNRU1gIGdldHMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYm90aCBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYCBhcmUgc2V0LiBBbmQgYFBBR0VfUE9PTGAgaXRzZWxmIGlzIHNlbGVjdGVkIGJ5IGBCUEZfU1lTQ0FMTGAgaWYgdGhlIGBORVRgIG9wdGlvbiBpcyB0dXJuZWQgb24uIFBsdXMsIGBETUFfU0hBUkVEX0JVRkZFUmAgaXMgcHVsbGVkIGluIGJ5IG90aGVyIHRoaW5ncyBsaWtlIGBTWU5DX0ZJTEVgLCBgRE1BQlVGX0hFQVBTYCwgYW5kIGBEUk1gLgoKSW5pdGlhbGx5LCBJIHRob3VnaHQsICYjMzQ7TGV0JiMzOTtzIGJlIGV4cGxpY2l0IGFuZCBqdXN0IGFkZCBgTkVUX0RFVk1FTWAsIGBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdlJiMzOTtyZSBleGVyY2lzaW5nIHRoZXNlIGZlYXR1cmVzIGluIG91ciB0ZXN0cy4mIzM0OyBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBgTkVUX0RFVk1FTWAgaXMgYGRlZl9ib29sIHlgLCBtZWFuaW5nIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBpZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIFNvLCBpZiB3ZSBjYW4gZ3VhcmFudGVlIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LCB3ZSBhcmUgY292ZXJlZC4gVGhhdCBzYWlkLCBJJiMzOTttIHRoaW5raW5nIHdlIGNhbiBleHBsaWNpdGx5IHNwZWNpZnkgYE5FVF9ERVZNRU1gIGluIGBFbmFibGVDb25maWdzYCBhbnl3YXkgdG8gZW5zdXJlIGl0JiMzOTtzIHRlc3RlZC4gQWN0dWFsbHksIHNpbmNlIGl0JiMzOTtzIGEgYm9vbGVhbiwgd2UgY2FuIGp1c3Qgc2F5IGBORVRfREVWTUVNYCwgc28gdGhhdCBpcyBwcm9iYWJseSB0aGUgc2ltcGxlc3Qgd2F5LgoKTm93LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCwgYW5kIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuIEkgc2VlIHRoaXMgZnVuY3Rpb24sIHdpdGggdGhlIGBpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgIGNoZWNrLCBpcyBwYXJ0IG9mIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGJvdGggYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbWAuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIHRoZW4gY2FsbGVkIGJ5IGB0Y3Bfc2VuZG1zZ19sb2NrZWRgLiBTbywgYHRjcF9zZW5kbXNnX2xvY2tlZGAgaXMgbGlrZWx5IGEga2V5IGVudHJ5IHBvaW50IHRvIGxvb2sgYXQuCgpIb3dldmVyLCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRvIGF2b2lkICYjMzQ7Z2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMmIzM0OyBiZWNhdXNlIHRoZXkgY2FuIHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9uLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgdGNwX3NlbmRtc2dfbG9ja2VkYCBpcyAqdG9vKiBnZW5lcmljLiBJIG1lYW4sIGl0JiMzOTtzIHRoZSBjb3JlIG9mIFRDUCBzZW5kaW5nLCBzbyBpdCYjMzk7cyBib3VuZCB0byBiZSBzdXBlciBhY3RpdmUuIFllcywgaXQgaXMuIExldCYjMzk7cyBub3QgdXNlIHRoYXQsIHdlIG5lZWQgdG8gbG9vayBmb3Igc29tZXRoaW5nIGxlc3MgZ2VuZXJpYy4KCk9rYXksIHdoYXQgYWJvdXQgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYD8gVGhhdCYjMzk7cyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgc28gaXQmIzM5O3MgYWNjZXNzaWJsZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYxPXN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzYzOmludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2NC1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTc3MT1zdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3My17XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NzQ6XHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBza2ItXHUwMDNlc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzUtXHRcdFx0XHQgICAgICAgTlVMTCk7XG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzQ4LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NDk6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NTAtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc3NC19XG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc3NTpFWFBPUlRfU1lNQk9MKF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc2LVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmM9Nzg3PWludCB6ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk0LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3OTU6XHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoTlVMTCwgTlVMTCwgc2tiLCBmcm9tLCB+MFUsIE5VTEwpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03OTYtfVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTI9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTkzMy1cbm5ldC9jb3JlL3NrYnVmZi5jOjE5MzQ6XHRlcnIgPSBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrLCBza2IsIFx1MDAyNm1zZy1cdTAwM2Vtc2dfaXRlciwgbGVuLFxubmV0L2NvcmUvc2tidWZmLmMtMTkzNS1cdFx0XHRcdCAgICAgIGJpbmRpbmcpO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz04MD1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfZmlsbF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODctXHRpZiAoemNvcHkpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6ODg6XHRcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIE5VTEwsIHNrYixcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04OS1cdFx0XHRcdFx0ICAgICAgIFx1MDAyNm1zZy1cdTAwM2Vtc2dfaXRlciwgbGVuLCBOVUxMKTtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MjEyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmlydGlvX3RyYW5zcG9ydF9hbGxvY19za2Ioc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbyxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjM5LVx0LyogSWYgJiMzOTt2c2smIzM5OyAhPSBOVUxMIHRoZW4gcGF5bG9hZCBpcyBhbHdheXMgcHJlc2VudCwgc28gd2Vcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDA6XHQgKiB3aWxsIG5ldmVyIGNhbGwgJiMzOTtfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJiMzOTsgYmVsb3cgd2l0aG91dFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0MS1cdCAqIHNldHRpbmcgc2tiIG93bmVyIGluICYjMzk7c2tiX3NldF9vd25lcl93KCkmIzM5Oy4gVGhlIG9ubHkgY2FzZVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yNDYtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MjQ3Olx0LyogU2V0IG93bmVyIGhlcmUsIGJlY2F1c2UgJiMzOTtfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJiMzOTsgdXNlc1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0OC1cdCAqIG93bmVyIG9mIHNrYiB3aXRob3V0IGNoZWNrIHRvIHVwZGF0ZSAmIzM5O3NrX3dtZW1fYWxsb2MmIzM5Oy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyOTQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgUG90ZW50aWFsIFplcm8tQ29weSBTeW1ib2xzKioKClJpZ2h0LCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIGlzIGEgZGVjZW50IHN0YXJ0aW5nIHBvaW50IGZvciBteSBhbmFseXNpcy4gSXQgc2VlbXMgdG8gZW5jYXBzdWxhdGUgYSBjb3JlIHplcm8tY29weSBvcGVyYXRpb24uIEJ1dCB3YWl0LCB3aGF0IGFib3V0IGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gPyBUaGF0JiMzOTtzIGFsc28gZXhwb3J0ZWQgYW5kIG5vdCBzdGF0aWMsIHdoaWNoIG1ha2VzIGl0IGFub3RoZXIgaW50ZXJlc3RpbmcgY2FuZGlkYXRlIHRvIGludmVzdGlnYXRlLiBJdCBmZWVscyBsaWtlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgb3ZlcmxhcCBvciBhIGRpZmZlcmVudCBhcHByb2FjaCByZXByZXNlbnRlZCB0aGVyZS4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgcm9sZSBvZiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTWF5YmUgaXQmIzM5O3MgYW4gYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9yIHJlbGF0ZWQgaW4gc29tZSBtYW5uZXIuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2tidWZmLmg9MTc3MT1zdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3Ny1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3ODppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cdFx0XHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xOTEwPUVYUE9SVF9TWU1CT0xfR1BMKG1zZ196ZXJvY29weV91YnVmX29wcyk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxubmV0L2NvcmUvc2tidWZmLmM6MTkxMjppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTMtXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTk0OS19XG5uZXQvY29yZS9za2J1ZmYuYzoxOTUwOkVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbSk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxuLS1cbm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG4tLVxubmV0L2lwdjQvdGNwLmMtMTMzOC1cbm5ldC9pcHY0L3RjcC5jOjEzMzk6XHRcdFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHNrLCBza2IsIG1zZywgY29weSwgdWFyZyxcbm5ldC9pcHY0L3RjcC5jLTEzNDAtXHRcdFx0XHRcdFx0ICAgICAgIGJpbmRpbmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk4MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgbG9va3MgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuIEkmIzM5O3ZlIGdvdCBhIGZlZWxpbmcgaXQmIzM5O3MgY2VudHJhbCB0byB1bmRlcnN0YW5kaW5nIHRoaXMgY2hhbmdlLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMuIEhtbSwgbm8sIGl0JiMzOTtzIG5vdCBhIHZpYWJsZSBmb2N1cyBzeW1ib2wsIHVuZm9ydHVuYXRlbHkuCgpBbHJpZ2h0LCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgdGhhdCBjaGVjazogYGlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHJldHVybiAtRUZBVUxUO2AuIEFoLCByaWdodCwgdGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdl4oCUaXQgZXhwbGljaXRseSBwcmV2ZW50cyB0aGUgdW5kZXNpcmFibGUgc2l0dWF0aW9uIG9mIG1peGluZyByZWFkYWJsZSBhbmQgZGV2bWVtIGZyYWdtZW50cyB3aXRoaW4gdGhlIHNhbWUgU0tCLiBZZXAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSBhIGNoYW5nZSB3b3J0aCB2ZXJpZnlpbmcgd2l0aCByaWdvcm91cyB0ZXN0aW5nLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hpY2ggY29uZmlndXJhdGlvbnMgdGhpcyBtaWdodCBpbnRlcmFjdCB3aXRoLiBJdCBsb29rcyBsaWtlIGBORVRfREVWTUVNYCBpcyB0aGUga2V5IGNvbmZpZyBoZXJlOyBpdCBkZXBlbmRzIG9uIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgLiBPa2F5LCBzbyBJJiMzOTtsbCBhZGQgdGhvc2UgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUaGUgZXhpc3RpbmcgZm9jdXMgc3ltYm9scyBhcmUgc3RpbGwgZ29vZDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCBhbmQgb2YgY291cnNlIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgTkVUX0RFVk1FTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGVuYWJsZXIuIFl1cCwgaXQmIzM5O3MgdGhlIG9uZS4gQW5kIG5vdywgSSBzaG91bGQgYWxzbyB2ZXJpZnkgd2hlcmUgYHNrYl9mcmFnc19yZWFkYWJsZWAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlcnMuIEp1c3QgbWFraW5nIHN1cmUgSSBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza2JfZnJhZ3NfcmVhZGFibGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDcxPXN0YXRpYyBuZXRkZXZfdHhfdCBibnh0X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01NzUtXHRpZiAoZnJlZV9zaXplID09IGJwLVx1MDAzZXR4X3Jpbmdfc2l6ZSBcdTAwMjZcdTAwMjYgbGVuZ3RoIFx1MDAzYz0gYnAtXHUwMDNldHhfcHVzaF90aHJlc2ggXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1NzY6XHQgICAgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikgXHUwMDI2XHUwMDI2ICFsZmxhZ3MpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU3Ny1cdFx0c3RydWN0IHR4X3B1c2hfYnVmZmVyICp0eF9wdXNoX2J1ZiA9IHR4ci1cdTAwM2V0eF9wdXNoO1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTg4ND1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3pjb3B5X2Rvd25ncmFkZV9tYW5hZ2VkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xODkwLS8qIFJldHVybiB0cnVlIGlmIGZyYWdzIGluIHRoaXMgc2tiIGFyZSByZWFkYWJsZSBieSB0aGUgaG9zdC4gKi9cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTg5MTpzdGF0aWMgaW5saW5lIGJvb2wgc2tiX2ZyYWdzX3JlYWRhYmxlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE4OTIte1xuLS1cbmluY2x1ZGUvbmV0L3RjcC5oPTEyMzM9c3RhdGljIGlubGluZSBib29sIHRjcF9za2JfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBza19idWZmICp0byxcbi0tXG5pbmNsdWRlL25ldC90Y3AuaC0xMjM5LVx0XHQgICAgICBza2JfcHVyZV96Y29weV9zYW1lKHRvLCBmcm9tKSBcdTAwMjZcdTAwMjZcbmluY2x1ZGUvbmV0L3RjcC5oOjEyNDA6XHRcdCAgICAgIHNrYl9mcmFnc19yZWFkYWJsZSh0bykgPT0gc2tiX2ZyYWdzX3JlYWRhYmxlKGZyb20pKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTEyNDEtfVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmM9Mzg5PXN0YXRpYyBpbnQgX19za2JfZGF0YWdyYW1faXRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNDEwLVxubmV0L2NvcmUvZGF0YWdyYW0uYzo0MTE6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2NvcmUvZGF0YWdyYW0uYy00MTItXHRcdGdvdG8gc2hvcnRfY29weTtcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzNT1pbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzktXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjY0MDpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTY0MS1cdFx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzE0LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MTU6XHRpZiAoaSBcdTAwMjZcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcxNi1cdFx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxubmV0L2NvcmUvZGV2LmM9MzU2OT1pbnQgc2tiX2NoZWNrc3VtX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9kZXYuYy0zNTgxLVxubmV0L2NvcmUvZGV2LmM6MzU4MjpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHtcbm5ldC9jb3JlL2Rldi5jLTM1ODMtXHRcdHJldHVybiAtRUZBVUxUO1xuLS1cbm5ldC9jb3JlL2Rldi5jPTM5OTE9c3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3VucmVhZGFibGVfc2tiKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvZGV2LmMtMzk5Ni1cbm5ldC9jb3JlL2Rldi5jOjM5OTc6XHRpZiAobGlrZWx5KHNrYl9mcmFnc19yZWFkYWJsZShza2IpIHx8XG5uZXQvY29yZS9kZXYuYy0zOTk4LVx0XHQgICBkZXYtXHUwMDNlbmV0bWVtX3R4ID09IE5FVE1FTV9UWF9OT19ETUEpKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5OTc9aW50IHNrYl9jb3B5X3VidWZzKHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTIwMDYtXG5uZXQvY29yZS9za2J1ZmYuYzoyMDA3Olx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTIwMDgtXHRcdHJldHVybiAtRUZBVUxUO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTIxNzc9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTIxODItXG5uZXQvY29yZS9za2J1ZmYuYzoyMTgzOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTIxODQtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTI1MDI9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5X2V4cGFuZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTI1MTItXG5uZXQvY29yZS9za2J1ZmYuYzoyNTEzOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTI1MTQtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTI4MDg9c3RhdGljIGludCBwc2tiX3RyaW1fcmNzdW1fY29tcGxldGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbilcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0yODExLVxubmV0L2NvcmUvc2tidWZmLmM6MjgxMjpcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkge1xubmV0L2NvcmUvc2tidWZmLmMtMjgxMy1cdFx0c2tiLVx1MDAzZWNzdW0gPSBjc3VtX2Jsb2NrX3N1Yihza2ItXHUwMDNlY3N1bSxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0yODc1PXZvaWQgKl9fcHNrYl9wdWxsX3RhaWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGRlbHRhKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTI4ODItXG5uZXQvY29yZS9za2J1ZmYuYzoyODgzOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTI4ODQtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTMwMTk9aW50IHNrYl9jb3B5X2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgdm9pZCAqdG8sIGludCBsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzAzOC1cbm5ldC9jb3JlL3NrYnVmZi5jOjMwMzk6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2NvcmUvc2tidWZmLmMtMzA0MC1cdFx0Z290byBmYXVsdDtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0zMjA1PXN0YXRpYyBib29sIF9fc2tiX3NwbGljZV9iaXRzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzIyNy1cdCAqL1xubmV0L2NvcmUvc2tidWZmLmM6MzIyODpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy0zMjI5LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MzQ0OD1pbnQgc2tiX3N0b3JlX2JpdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgY29uc3Qgdm9pZCAqZnJvbSwgaW50IGxlbilcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zNDY2LVxubmV0L2NvcmUvc2tidWZmLmM6MzQ2NzpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy0zNDY4LVx0XHRnb3RvIGZhdWx0O1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTM1Mjk9X193c3VtIHNrYl9jaGVja3N1bShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBfX3dzdW0gY3N1bSlcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zNTQ2LVxubmV0L2NvcmUvc2tidWZmLmM6MzU0NzpcdGlmIChXQVJOX09OX09OQ0UoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTM1NDgtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTM2MTE9X193c3VtIHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zNjMyLVxubmV0L2NvcmUvc2tidWZmLmM6MzYzMzpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy0zNjM0LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0zNzAwPXUzMiBza2JfY3JjMzJjKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsIGludCBsZW4sIHUzMiBjcmMpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzcxNC1cbm5ldC9jb3JlL3NrYnVmZi5jOjM3MTU6XHRpZiAoV0FSTl9PTl9PTkNFKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkpXG5uZXQvY29yZS9za2J1ZmYuYy0zNzE2LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz00NDQwPXVuc2lnbmVkIGludCBza2Jfc2VxX3JlYWQodW5zaWduZWQgaW50IGNvbnN1bWVkLCBjb25zdCB1OCAqKmRhdGEsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNDQ2MS1cbm5ldC9jb3JlL3NrYnVmZi5jOjQ0NjI6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShzdC1cdTAwM2VjdXJfc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTQ0NjMtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTYxNzI9Ym9vbCBza2JfdHJ5X2NvYWxlc2NlKHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNjE5MS1cbm5ldC9jb3JlL3NrYnVmZi5jOjYxOTI6XHRpZiAoc2tiX2ZyYWdzX3JlYWRhYmxlKGZyb20pICE9IHNrYl9mcmFnc19yZWFkYWJsZSh0bykpXG5uZXQvY29yZS9za2J1ZmYuYy02MTkzLVx0XHRyZXR1cm4gZmFsc2U7XG5uZXQvY29yZS9za2J1ZmYuYy02MTk0LVxubmV0L2NvcmUvc2tidWZmLmM6NjE5NTpcdGlmIChsZW4gXHUwMDNjPSBza2JfdGFpbHJvb20odG8pIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoZnJvbSkpIHtcbm5ldC9jb3JlL3NrYnVmZi5jLTYxOTYtXHRcdGlmIChsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9NzA2Mj12b2lkIHNrYl9jb25kZW5zZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTcwNjUtXHRcdGlmIChza2ItXHUwMDNlZGF0YV9sZW4gXHUwMDNlIHNrYi1cdTAwM2VlbmQgLSBza2ItXHUwMDNldGFpbCB8fFxubmV0L2NvcmUvc2tidWZmLmM6NzA2NjpcdFx0ICAgIHNrYl9jbG9uZWQoc2tiKSB8fCAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy03MDY3LVx0XHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC90Y3AuYz0yMTk1PXN0YXRpYyBpbnQgdGNwX3plcm9jb3B5X3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTIyNjgtXG5uZXQvaXB2NC90Y3AuYzoyMjY5Olx0XHRcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvaXB2NC90Y3AuYy0yMjcwLVx0XHRcdFx0YnJlYWs7XG4tLVxubmV0L2lwdjQvdGNwLmM9MjQ5OT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2RtYWJ1ZihzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdGNwLmMtMjUxNC1cbm5ldC9pcHY0L3RjcC5jOjI1MTU6XHRcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkge1xubmV0L2lwdjQvdGNwLmMtMjUxNi1cdFx0XHRlcnIgPSAtRU5PREVWO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTI1NjEtXG5uZXQvaXB2NC90Y3AuYzoyNTYyOlx0XHRcdC8qICFza2JfZnJhZ3NfcmVhZGFibGUoKSBzaG91bGQgaW5kaWNhdGUgdGhhdCBBTEwgdGhlXG5uZXQvaXB2NC90Y3AuYy0yNTYzLVx0XHRcdCAqIGZyYWdzIGluIHRoaXMgc2tiIGFyZSBkbWFidWYgbmV0X2lvdnMuIFdlJiMzOTtyZSBjaGVja2luZ1xuLS1cbm5ldC9pcHY0L3RjcC5jLTI1NjUtXHRcdFx0ICogaGVyZS4gSWYgdGhlIHRjcCBzdGFjayBpcyBub3Qgc2V0dGluZ1xubmV0L2lwdjQvdGNwLmM6MjU2NjpcdFx0XHQgKiBza2JfZnJhZ3NfcmVhZGFibGUoKSBjb3JyZWN0bHksIHdlIHN0aWxsIGRvbiYjMzk7dCB3YW50XG5uZXQvaXB2NC90Y3AuYy0yNTY3LVx0XHRcdCAqIHRvIGNyYXNoIGhlcmUuXG4tLVxubmV0L2lwdjQvdGNwLmM9MjY1NT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbi0tXG5uZXQvaXB2NC90Y3AuYy0yODM1LVx0XHRcdGlmIChsYXN0X2NvcGllZF9kbWFidWYgIT0gLTEgXHUwMDI2XHUwMDI2XG5uZXQvaXB2NC90Y3AuYzoyODM2Olx0XHRcdCAgICBsYXN0X2NvcGllZF9kbWFidWYgIT0gIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2lwdjQvdGNwLmMtMjgzNy1cdFx0XHRcdGJyZWFrO1xubmV0L2lwdjQvdGNwLmMtMjgzOC1cbm5ldC9pcHY0L3RjcC5jOjI4Mzk6XHRcdFx0aWYgKHNrYl9mcmFnc19yZWFkYWJsZShza2IpKSB7XG5uZXQvaXB2NC90Y3AuYy0yODQwLVx0XHRcdFx0ZXJyID0gc2tiX2NvcHlfZGF0YWdyYW1fbXNnKHNrYiwgb2Zmc2V0LCBtc2csXG4tLVxubmV0L2lwdjQvdGNwLmMtMjg3MC1cbm5ldC9pcHY0L3RjcC5jOjI4NzE6XHRcdGxhc3RfY29waWVkX2RtYWJ1ZiA9ICFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKTtcbm5ldC9pcHY0L3RjcC5jLTI4NzItXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NTc3Mz10Y3BfY29sbGFwc2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCxcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01Nzg2LVxubmV0L2lwdjQvdGNwX2lucHV0LmM6NTc4NzpcdFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU3ODgtXHRcdFx0Z290byBza2lwX3RoaXM7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNTgwOS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjU4MTA6XHRcdGlmIChuIFx1MDAyNlx1MDAyNiBuICE9IHRhaWwgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShuKSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4MTEtXHRcdCAgICB0Y3Bfc2tiX2Nhbl9jb2xsYXBzZV9yeChza2IsIG4pIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4MjItXHQgICAgKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2V0Y3BfZmxhZ3MgXHUwMDI2IChUQ1BIRFJfU1lOIHwgVENQSERSX0ZJTikpIHx8XG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo1ODIzOlx0ICAgICFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4MjQtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODY1LVx0XHRcdFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNldGNwX2ZsYWdzIFx1MDAyNiAoVENQSERSX1NZTiB8IFRDUEhEUl9GSU4pKSB8fFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NTg2NjpcdFx0XHRcdCAgICAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODY3LVx0XHRcdFx0XHRnb3RvIGVuZDtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MzQ5MT1zdGF0aWMgYm9vbCB0Y3BfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMzQ5Ni1cdFx0cmV0dXJuIGZhbHNlO1xubmV0L2lwdjQvdGNwX291dHB1dC5jOjM0OTc6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTM0OTgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz03MDE9c3RhdGljIHVuc2lnbmVkIGludCBuZnVsbmxfZ2V0X2NvcHlfbGVuKGNvbnN0IHN0cnVjdCBuZl9sb2dpbmZvICpsaSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy03MDktXHRcdGNvcHlfbGVuID0gbGktXHUwMDNldS51bG9nLmNvcHlfbGVuO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6NzEwOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTcxMS1cdFx0bGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTY5Mz1zdGF0aWMgdW5zaWduZWQgaW50IG5mcW5sX2dldF9kYXRhX2xlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZW50c2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtNjk3LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo2OTg6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShlbnRza2IpKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy02OTktXHRcdGRhdGFfbGVuID0gc2tiX2hlYWRsZW4oZW50c2tiKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTIxMTU9c3RhdGljIGludCBwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMTUyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMTUzOlx0c25hcGxlbiA9IHNrYl9mcmFnc19yZWFkYWJsZShza2IpID8gc2tiLVx1MDAzZWxlbiA6IHNrYl9oZWFkbGVuKHNrYik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxNTQtXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMjI4PXN0YXRpYyBpbnQgdHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyNzItXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIyNzM6XHRzbmFwbGVuID0gc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikgPyBza2ItXHUwMDNlbGVuIDogc2tiX2hlYWRsZW4oc2tiKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjI3NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5MzUKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogNTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgQ29yZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBhZGRlZCBgaWYgKGkgJmFtcDsmYW1wOyBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkgcmV0dXJuIC1FRkFVTFQ7YCBpbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGNhdGNoZXMgbXkgZXllLiBJdCYjMzk7cyBhIHByb3RlY3Rpb24gbWVjaGFuaXNtOyBpdCYjMzk7cyBwcmV2ZW50aW5nIHRoZSBmaWxsaW5nIG9mIGEgZGV2bWVtIFNLQiBpZiBpdCBhbHJlYWR5IGNvbnRhaW5zIHJlYWRhYmxlIGZyYWdtZW50cy4gVGhhdCYjMzk7cyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBJJiMzOTtsbCBnaXZlIHRoZW0gdGhhdC4KCkZ1bmN0aW9uYWxseSwgdGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIHRocm91Z2ggYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbWAuIE5vdywgbGV0JiMzOTtzIHRyYWNlIHRoaXMuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAsIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gIGlzIGNhbGxlZCBpbiBgbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jYCBieSBib3RoIGB2aXJ0aW9fdHJhbnNwb3J0X2ZpbGxfc2tiYCBhbmQgYHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiYC4KCldhaXQgYSBtaW51dGUuLi4gSSBzZWUgdGhhdCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gIGlzIHBhc3NpbmcgYSBgTlVMTGAgZm9yIGBiaW5kaW5nYC4gVGhpcyBtZWFucyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGlzICpvbmx5KiBjYWxsZWQgd2hlbiBgYmluZGluZ2AgaXNuJiMzOTt0IGBOVUxMYC4gQW5kIEkgY2FuIHNlZSB0aGF0IGBiaW5kaW5nYCBpcyAqb25seSogbm9uLWBOVUxMYCBpbiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBpbiBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gR290IGl0LiBUaGF0IG1lYW5zIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIHRoZSBtb3JlIGltcG9ydGFudCBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBlZmZvcnRzLiBJdCBpcyBtb3JlIGxpa2VseSB0byB0cmlnZ2VyIHRoZSBuZXcgY29kZS4KCk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2sgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLiAgYE5FVF9ERVZNRU1gIHJlcXVpcmVzIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgLiBPa2F5LiBJJiMzOTtsbCBhZGQgYE5FVF9ERVZNRU1gIHRvIGBFbmFibGVDb25maWdzYC4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBhZGQgYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAgdG8gYEVuYWJsZUNvbmZpZ3NgIGFzIHdlbGwsIGp1c3QgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgaWYgaXQgaXNuJiMzOTt0IGVuYWJsZWQgYnkgZGVmYXVsdC4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25zb2xpZGF0ZSB0aGlzIGludG8gYSBjbGVhciBzdW1tYXJ5OgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUuCiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRoYXQgd2lsbCBwcmV2ZW50IHRoZSBjb21iaW5hdGlvbiBvZiByZWFkYWJsZSBmcmFnbWVudHMgYW5kIGRldm1lbSBmcmFnbWVudHMgd2l0aGluIHRoZSBzYW1lIFNLQi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIG5ldHdvcmsgY29yZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGRldm1lbSBUQ1AuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGdvaW5nIHRvIHNldCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIHRvIGludmVzdGlnYXRlIHRoZSBjb2RlLCBhbmQga2VlcCBhIGZvY3VzIG9uIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLgoqICAgKipFbmFibGVDb25maWdzOioqIEkgbmVlZCB0byBhZGQgYE5FVF9ERVZNRU1gLCBgRE1BX1NIQVJFRF9CVUZGRVJgLCBhbmQgYFBBR0VfUE9PTGAuCgpMZXQmIzM5O3MgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWTUVNJiMzNDssCiAgICAmIzM0O0RNQV9TSEFSRURfQlVGRkVSJiMzNDssCiAgICAmIzM0O1BBR0VfUE9PTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19femVyb2NvcHlfc2dfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weV9pdGVyX3N0cmVhbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCB0byBwcmV2ZW50IG1peGluZyByZWFkYWJsZSBmcmFncyB3aXRoIGRldm1lbSBmcmFncyBpbiB0aGUgc2FtZSBza2IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBjb3JlIGRhdGFncmFtIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgZm9yIGRldm1lbSBUQ1AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7RE1BX1NIQVJFRF9CVUZGRVImIzM0OywKICAgICYjMzQ7UEFHRV9QT09MJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUwOjE2LjU5NDc1NzcxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzEyMDU5ODM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJETUFfU0hBUkVEX0JVRkZFUlwiLFxuICAgIFwiUEFHRV9QT09MXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTA6MTYuNTk0NzY2MTUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTMwMDYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MGFmMWZjZDg4ZWVhYmI1YWE2NjZiNjdhYWNjNmJjNjc2MTU4N2Y2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDAwOjUwOjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RhdGFncmFtLmMgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuaW5kZXggYzI4NWM2NDY1OTIzZTQuLjE3M2I1ZDk3YmQ0MDlhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2RhdGFncmFtLmNcXG4rKysgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuQEAgLTcxMiw2ICs3MTIsOSBAQCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuIFxcdHNpemVfdCB2aXJ0X2FkZHIsIHNpemUsIG9mZjtcXG4gXFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XFxuIFxcbitcXHRpZiAoaSBcXHUwMDI2XFx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG4rXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuK1xcbiBcXHQvKiBEZXZtZW0gZmlsbGluZyB3b3JrcyBieSB0YWtpbmcgYW4gSU9WRUMgZnJvbSB0aGUgdXNlciB3aGVyZSB0aGVcXG4gXFx0ICogaW92X2FkZHJzIGFyZSBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgaW4gYnl0ZXMgaW50byB0aGUgZG1hLWJ1ZiB0b1xcbiBcXHQgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUwOjE3LjA4ODQ2MDMxM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIyMjYyNjg2Nzk5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJETUFfU0hBUkVEX0JVRkZFUlwiLFxuICAgIFwiUEFHRV9QT09MXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODBhZjFmY2Q4OGVlYWJiNWFhNjY2YjY3YWFjYzZiYzY3NjE1ODdmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDAwOjUwOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGF0YWdyYW0uYyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbmluZGV4IGMyODVjNjQ2NTkyM2U0Li4xNzNiNWQ5N2JkNDA5YSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2RhdGFncmFtLmNcbisrKyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbkBAIC03MTIsNiArNzEyLDkgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIFx0c2l6ZV90IHZpcnRfYWRkciwgc2l6ZSwgb2ZmO1xuIFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4gXG4rXHRpZiAoaSBcdTAwMjZcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4rXHRcdHJldHVybiAtRUZBVUxUO1xuK1xuIFx0LyogRGV2bWVtIGZpbGxpbmcgd29ya3MgYnkgdGFraW5nIGFuIElPVkVDIGZyb20gdGhlIHVzZXIgd2hlcmUgdGhlXG4gXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXG4gXHQgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MDoxNy4wODg0NjIwNzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDI2NjQ0NzYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIENvcmUgRGF0YWdyYW0gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIHByZXR0eSBmdW5kYW1lbnRhbCBmb3IgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uLlxuXG5UaGUgaW50ZXJlc3RpbmcgYml0IGlzIHRoZSBhZGRpdGlvbiBvZiB0aGlzIGNoZWNrOlxuXG5gYGBjXG5cdGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcblx0XHRyZXR1cm4gLUVGQVVMVDtcbmBgYFxuXG5TbywgaWYgYGlgICh3aGF0ZXZlciB0aGF0IHJlcHJlc2VudHMgaW4gdGhpcyBjb250ZXh0IOKAkyBwcm9iYWJseSBhbiBpbmRleCBvciBzb21lIGtpbmQgb2YgY291bnRlciB3aXRoaW4gdGhlIGxvb3ApIGlzIG5vbi16ZXJvLCBhbmQgYHNrYl9mcmFnc19yZWFkYWJsZShza2IpYCBpcyB0cnVlLCB3ZSBnZXQgYSAtRUZBVUxULiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29uZGl0aW9uYWwgaXMgYWltaW5nIHRvIHByZXZlbnQuIFwic2tiX2ZyYWdzX3JlYWRhYmxlXCIgaXMgdGhlIGtleSBoZXJlLiBJdCdzIHVzZWQgdG8gY2hlY2sgaWYgZnJhZ3Mgd2l0aGluIHRoZSBza2IgaGF2ZSByZWFkYWJsZSBwZXJtaXNzaW9ucywgc28gdGhpcyBzZWVtcyB0byBiZSBhZGRpbmcgYSByZXN0cmljdGlvbiB0byBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyB3aXRoIHNrYiBmcmFncy5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBjbGVhcmx5IG1vZGlmeWluZyB0aGUgZGF0YWdyYW0gaGFuZGxpbmcgbG9naWMgd2l0aGluIHRoZSBuZXR3b3JrIGNvcmUuIEkgbmVlZCB0byBjYXJlZnVsbHkgYW5hbHl6ZSB0aGUgb3JpZ2luYWwgY29kZSwgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCAqd2h5KiB0aGlzIHBhcnRpY3VsYXIgY2hlY2sgaXMgYmVpbmcgaW50cm9kdWNlZC4gV2hhdCBzY2VuYXJpbyBpcyB0aGlzIGd1YXJkaW5nIGFnYWluc3Q/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdHk/IERhdGEgY29ycnVwdGlvbj8gUGVyZm9ybWFuY2UgaXNzdWU/IEFuZCB3aGF0J3MgdGhlIHNlbWFudGljIG1lYW5pbmcgb2YgYGlgIGluIHRoaXMgZnVuY3Rpb24/XG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9mIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgdG8gZGV0ZXJtaW5lIHdoYXQgaXQncyBzdXBwb3NlZCB0byBkbyBhbmQgaG93IHRoZSBwYXRjaCBhZmZlY3RzIGl0LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY2hlY2sgdG8gYXNzZXNzIGl0cyBpbXBhY3Qgb24gb3ZlcmFsbCBuZXR3b3JrIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MToyMS4zNTQ5MTI5NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMDExODIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9kYXRhZ3JhbS5jPTcwNj1zdGF0aWMgaW50XFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDc6emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzA4LVxcdFxcdFxcdCAgICAgIGludCBsZW5ndGgsXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc0OT1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2MC1cXHRlbHNlIGlmIChiaW5kaW5nKVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYxOlxcdFxcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHNrYiwgZnJvbSwgbGVuZ3RoLCBiaW5kaW5nKTtcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2Mi1cXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjIzLjY2NTA0MTE3MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODI3NTA4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBaZXJvLUNvcHkgRGF0YSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSBub3RlIGlzIHRoYXQgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhbiBpbnRlcm5hbCBoZWxwZXIsIGxpa2VseSBzcGVjaWZpYyB0byB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCdzIGRlZmluZWQgaW4uIFRoaXMgc3VnZ2VzdHMgaXQncyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gb3V0c2lkZSB0aGlzIHNwZWNpZmljIG1vZHVsZS4gQW5kIGl0IGlzIGNhbGxlZCBieSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLlxuXG5Ob3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIGlzLCBcIldoZXJlICplbHNlKiBpcyBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIGJlaW5nIHVzZWQ/XCIgS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBwdXJwb3NlIG9mIHRoaXMgemVyby1jb3B5IGRhdGEgcGF0aC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGF0IGZ1bmN0aW9uIHRvIGdhaW4gYSBjbGVhcmVyIHBpY3R1cmUuIEl0J3MgdGltZSB0byBmaW5kIHRoZSBjYWxsIHNpdGVzIGZvciBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTE6MjYuNjQ3Nzk0NDcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTgwMTQ0NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYxPXN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Mi1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjM6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2NC1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzMte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3NDpcXHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBza2ItXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzc1LVxcdFxcdFxcdFxcdCAgICAgICBOVUxMKTtcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9NzA3PXplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzQ4LVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzQ5OmludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc1MC1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NzQtfVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzc1OkVYUE9SVF9TWU1CT0woX196ZXJvY29weV9zZ19mcm9tX2l0ZXIpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc2LVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03ODc9aW50IHplcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc5NC1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc5NTpcXHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoTlVMTCwgTlVMTCwgc2tiLCBmcm9tLCB+MFUsIE5VTEwpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk2LX1cXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTI9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xOTMzLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MzQ6XFx0ZXJyID0gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBzaywgc2tiLCBcXHUwMDI2bXNnLVxcdTAwM2Vtc2dfaXRlciwgbGVuLFxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MzUtXFx0XFx0XFx0XFx0ICAgICAgYmluZGluZyk7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9ODA9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X2ZpbGxfc2tiKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODctXFx0aWYgKHpjb3B5KVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo4ODpcXHRcXHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBOVUxMLCBza2IsXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2bXNnLVxcdTAwM2Vtc2dfaXRlciwgbGVuLCBOVUxMKTtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTIzOS1cXHQvKiBJZiAndnNrJyAhPSBOVUxMIHRoZW4gcGF5bG9hZCBpcyBhbHdheXMgcHJlc2VudCwgc28gd2VcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MjQwOlxcdCAqIHdpbGwgbmV2ZXIgY2FsbCAnX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoKScgYmVsb3cgd2l0aG91dFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yNDEtXFx0ICogc2V0dGluZyBza2Igb3duZXIgaW4gJ3NrYl9zZXRfb3duZXJfdygpJy4gVGhlIG9ubHkgY2FzZVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0Ni1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MjQ3OlxcdC8qIFNldCBvd25lciBoZXJlLCBiZWNhdXNlICdfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJyB1c2VzXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0OC1cXHQgKiBvd25lciBvZiBza2Igd2l0aG91dCBjaGVjayB0byB1cGRhdGUgJ3NrX3dtZW1fYWxsb2MnLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MToyOC42NDU4MTQ1NzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc3NTg2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIERhdGEgRmxvdzogYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyB3aGVuIGBiaW5kaW5nYCBpc24ndCBhIG51bGwgcG9pbnRlci4gVGhhdCdzIHRoZSB0cmlnZ2VyLiBXaGVuIHRoYXQgaGFwcGVucywgdGhpcyBgYmluZGluZ2AgdmFyaWFibGUgZ2V0cyBwYXNzZWQgZGlyZWN0bHkgdG8gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgd2hlbiBgYmluZGluZ2AgaXMgaW5kZWVkICpub3QqIE5VTEwuIEdvdHRhIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgd2l0aCB0aGF0IGNvbmRpdGlvbi4gRGlnZ2luZyBpbnRvIHRoZSBjb2RlLCBhbmQgSSBzZWUgaXQhIFJpZ2h0IHRoZXJlIGluIGBuZXQvY29yZS9za2J1ZmYuY2AgYXQgbGluZSAxOTM0LCBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBtYWtlcyB0aGUgY2FsbDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sIGJpbmRpbmcpYC4gUGVyZmVjdC4gU28gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgaXMgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGF0J3MgdGhlIHJlbGV2YW50IHBhdGggZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTozMi4yMjM0MDM3OTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MDcxNDAwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc4OmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MTExNj1pbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEzMzgtXFxubmV0L2lwdjQvdGNwLmM6MTMzOTpcXHRcXHRcXHRlcnIgPSBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc2ssIHNrYiwgbXNnLCBjb3B5LCB1YXJnLFxcbm5ldC9pcHY0L3RjcC5jLTEzNDAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJpbmRpbmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTozMy45NzQxMjI4MTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM0OTMyMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgdGhlIERhdGEgRmxvdzogYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgZnVuY3Rpb24gY2FsbC4gSXQncyBjbGVhcmx5IGltcG9ydGFudCwgYW5kIGZyb20gdGhlIGluaXRpYWwgY29udGV4dCwgaXQncyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYHRjcF9zZW5kbXNnX2xvY2tlZGAgZnVuY3Rpb24uIFRoaXMgbWFrZXMgc2Vuc2U7IHN0cmVhbS1iYXNlZCBwcm90b2NvbHMgbGlrZSBUQ1AgYXJlIG5hdHVyYWwgY2FuZGlkYXRlcyBmb3IgemVyby1jb3B5IG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdXNlciBkYXRhLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSAqaG93KiB0aGUgYGJpbmRpbmdgIGlzIG9idGFpbmVkIHdpdGhpbiBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gSSBuZWVkIHRvIHRyYWNrIHRoYXQgZG93bjsgaXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0IGJpbmRpbmcgaXMgbWFuYWdlZCB3aWxsIGlsbHVtaW5hdGUgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBhbmQgdGhhdCAnYmluZGluZycgaXMgdGhlIGNvcmUgb2Ygd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0J3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTE6MzguNzA5MDU3MTU2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjE2ODA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiaW5kaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxubmV0L2lwdjQvdGNwLmMtMTExNy17XFxubmV0L2lwdjQvdGNwLmM6MTExODpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IE5VTEw7XFxubmV0L2lwdjQvdGNwLmMtMTExOS1cXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTExNTgtXFx0XFx0XFx0aWYgKCFzb2NrY19lcnIgXFx1MDAyNlxcdTAwMjYgc29ja2MuZG1hYnVmX2lkKSB7XFxubmV0L2lwdjQvdGNwLmM6MTE1OTpcXHRcXHRcXHRcXHRiaW5kaW5nID0gbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzaywgc29ja2MuZG1hYnVmX2lkKTtcXG5uZXQvaXB2NC90Y3AuYzoxMTYwOlxcdFxcdFxcdFxcdGlmIChJU19FUlIoYmluZGluZykpIHtcXG5uZXQvaXB2NC90Y3AuYzoxMTYxOlxcdFxcdFxcdFxcdFxcdGVyciA9IFBUUl9FUlIoYmluZGluZyk7XFxubmV0L2lwdjQvdGNwLmM6MTE2MjpcXHRcXHRcXHRcXHRcXHRiaW5kaW5nID0gTlVMTDtcXG5uZXQvaXB2NC90Y3AuYy0xMTYzLVxcdFxcdFxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEzMzktXFx0XFx0XFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHNrLCBza2IsIG1zZywgY29weSwgdWFyZyxcXG5uZXQvaXB2NC90Y3AuYzoxMzQwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBiaW5kaW5nKTtcXG5uZXQvaXB2NC90Y3AuYy0xMzQxLVxcdFxcdFxcdGlmIChlcnIgPT0gLUVNU0dTSVpFIHx8IGVyciA9PSAtRUVYSVNUKSB7XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDE5LVxcdFxcdG5ldF96Y29weV9wdXQodWFyZyk7XFxubmV0L2lwdjQvdGNwLmM6MTQyMDpcXHRpZiAoYmluZGluZylcXG5uZXQvaXB2NC90Y3AuYzoxNDIxOlxcdFxcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xcbm5ldC9pcHY0L3RjcC5jLTE0MjItXFx0cmV0dXJuIGNvcGllZCArIGNvcGllZF9zeW47XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDM4LVxcdH1cXG5uZXQvaXB2NC90Y3AuYzoxNDM5OlxcdGlmIChiaW5kaW5nKVxcbm5ldC9pcHY0L3RjcC5jOjE0NDA6XFx0XFx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoYmluZGluZyk7XFxubmV0L2lwdjQvdGNwLmMtMTQ0MS1cXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTI0OTk9c3RhdGljIGludCB0Y3BfcmVjdm1zZ19kbWFidWYoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMjU5OC1cXHRcXHRcXHRcXHRkbWFidWZfY21zZy5mcmFnX3Rva2VuID0gdGNwX3hhX3Bvb2wudG9rZW5zW3RjcF94YV9wb29sLmlkeF07XFxubmV0L2lwdjQvdGNwLmM6MjU5OTpcXHRcXHRcXHRcXHRkbWFidWZfY21zZy5kbWFidWZfaWQgPSBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nX2lkKG5pb3YpO1xcbm5ldC9pcHY0L3RjcC5jLTI2MDAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjM4Ljc4MTIzMTMzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTg4Nzc2MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqQW5hbHl6aW5nIGEgRGV2bWVtIFRDUCBQYXRjaCoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIHRoaXMgbmV3IGNoZWNrOiBgaWYgKGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKSByZXR1cm4gLUVGQVVMVDtgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBaCwgdGhpcyBpcyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gZGV2bWVtIFRDUCwgb3IgZGV2aWNlIG1lbW9yeSBUQ1AsIHdoaWNoLCBvZiBjb3Vyc2UsIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGZvciBUQ1Agb24gc3lzdGVtcyB3aXRoIGRpcmVjdCBtZW1vcnkgYWNjZXNzLlwiXG5cbkdpdmVuIHRoYXQgaXQncyBpbmplY3RpbmcgYW4gZXJyb3IgcmV0dXJuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50LiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgb3IgYW4gZWRnZSBjYXNlIHdpdGhpbiB0aGUgemVyb2NvcHkgb3BlcmF0aW9uIHdoZW4gdXNpbmcgZGV2aWNlIG1lbW9yeS4gVGhlIGNoZWNrIHdpdGggYGlgIGFuZCBgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgIGlzIHdoYXQncyBwaXF1aW5nIG15IGludGVyZXN0LiBJIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZSBwYXRjaCBhdXRob3IgaXMgdXNpbmcgYm90aCBvZiB0aGVzZSB0byBkZXRlcm1pbmUgdGhlIGxvZ2ljLCBidXQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgYXR0ZW1wdGluZyB0byBwcm90ZWN0IGFnYWluc3Qgc29tZSBraW5kIG9mIGNvbmN1cnJlbnQgYWNjZXNzIG9yIGJ1ZmZlciBjb3JydXB0aW9uIHdoZW4gdGhlIFNLQiBpcyB1c2luZyBmcmFncy4gSSBzaG91bGQgYWxzbyBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIHJlcXVpcmVkIGZvciBkZXZtZW0gVENQIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgY2hlY2sgZml0cyBpbiB0aGUgZWNvc3lzdGVtLiBJIHNob3VsZCBnbyBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBleGlzdGluZyBjb2RlYmFzZSB0byBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA4MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjQ2Ljk3MDAxMDQ1NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNTY5NjYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRfZGV2bWVtX2dldF9iaW5kaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldm1lbS5jPTM3Mj12b2lkIG5ldF9kZXZtZW1fcHV0X25ldF9pb3Yoc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy0zNzYtXFxubmV0L2NvcmUvZGV2bWVtLmM6Mzc3OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHN0cnVjdCBzb2NrICpzayxcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBkbWFidWZfaWQpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNTE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxcbm5ldC9jb3JlL2Rldm1lbS5oOjE1MjpuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZCk7XFxubmV0L2NvcmUvZGV2bWVtLmgtMTUzLXN0cnVjdCBuZXRfaW92ICpcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTIyMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uaDoyMjQ6bmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBkbWFidWZfaWQpXFxubmV0L2NvcmUvZGV2bWVtLmgtMjI1LXtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xMTU4LVxcdFxcdFxcdGlmICghc29ja2NfZXJyIFxcdTAwMjZcXHUwMDI2IHNvY2tjLmRtYWJ1Zl9pZCkge1xcbm5ldC9pcHY0L3RjcC5jOjExNTk6XFx0XFx0XFx0XFx0YmluZGluZyA9IG5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc2ssIHNvY2tjLmRtYWJ1Zl9pZCk7XFxubmV0L2lwdjQvdGNwLmMtMTE2MC1cXHRcXHRcXHRcXHRpZiAoSVNfRVJSKGJpbmRpbmcpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjQ4Ljc3NTcxMjA3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzAwNjM3Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgYGRldm1lbS5jYCBBYnlzcyoqXG5cbk9rYXksIHNvIHdlIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgbWVtb3J5IGFjY2VzcyBtZWNoYW5pc20gd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgbmV0L2NvcmUvZGV2bWVtLmNgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0aGUgbG93LWxldmVsIHN0dWZmIHRvIGxpdmUsIHRoZSBkcml2ZXItc3BlY2lmaWMgbWVtb3J5IG1hcHBpbmcgYW5kIGFjY2VzcyByb3V0aW5lcy4gSSB3YW50IHRvIHNlZSBob3cgdGhleSdyZSBoYW5kbGluZyBwaHlzaWNhbCBhZGRyZXNzZXMsIG1lbW9yeSByZWdpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgcmVzdHJpY3Rpb25zIG9yIHBlY3VsaWFyaXRpZXMuXG5cbk5leHQsIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmlsZS4gVGhlcmUgYXJlIGxpa2VseSBzb21lIGtlcm5lbCBjb25maWcgZmxhZ3MgdGhhdCBjb250cm9sIHRoZSBlbmFibGluZywgZGlzYWJsaW5nLCBhbmQgc3BlY2lmaWMgYmVoYXZpb3Igb2YgYGRldm1lbS5jYC4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGUgZnVuY3Rpb25hbGl0eS4gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgdG8gY29uc2lkZXI/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyBpZiBpdCBpcyBjb25maWd1cmVkIGEgY2VydGFpbiB3YXk/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MDIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1Mi4wNzYzNTIzNDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDExNDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldm1lbS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTQ4PW9iai0kKENPTkZJR19ORVRfVEVTVCkgKz0gbmV0X3Rlc3Qub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19ORVRfREVWTUVNKSArPSBkZXZtZW0ub1xcbm5ldC9jb3JlL01ha2VmaWxlLTUwLW9iai0kKENPTkZJR19ERUJVR19ORVQpICs9IGxvY2tfZGVidWcub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1Mi4xMzYzNzg4ODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NjgxMTkwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkVUX0RFVk1FTWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciBzb21ldGhpbmcgSSdtIHdvcmtpbmcgb24uIFRoYXQncyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBpdCdzIGJlZW4gdHJpZ2dlcmVkLiBMZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIGlzIHRoZSBgbmV0L0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSBhbGwgdGhlIG5ldHdvcmstcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb24gdGhpcyBvcHRpb24sIHdoYXQgZmVhdHVyZXMgaXQgZW5hYmxlcywgYW5kIHdoYXQgbW9kdWxlcyBhcmUgbm93IHJlbHlpbmcgb24gaXQuIEtub3dpbmcgdGhpcyB3aWxsIGNsYXJpZnkgdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBkZXBlbmRlbmN5LCBhbmQgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI0NywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjU1LjAwMzE5MzMzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MTg4MDg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RFVk1FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz02Nj1jb25maWcgU0tCX0VYVEVOU0lPTlNcXG4tLVxcbm5ldC9LY29uZmlnLTY4LVxcbm5ldC9LY29uZmlnOjY5OmNvbmZpZyBORVRfREVWTUVNXFxubmV0L0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1Ni43NjUwODE3NzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5MTQ2NjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBhIEtlcm5lbCBDb25maWd1cmF0aW9uIEZsYWcqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX05FVF9ERVZNRU1gIGlzIGRlZmluZWQgYXMgXCJ5XCIuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBkZWVwZXIgbG9vay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluZmx1ZW5jaW5nIHRoaXMgc2V0dGluZy4gTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBJJ2xsIHplcm8gaW4gYXJvdW5kIGxpbmUgNjksIHRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGV4cGxhbmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHRoZSBjb250ZXh0IGZvciB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgaXMgc2V0LCB3aGF0IG90aGVyIG9wdGlvbnMgaXQgZGVwZW5kcyBvbiBvciBhZmZlY3RzLCBhbmQgdWx0aW1hdGVseSwgd2hhdCBpbXBsaWNhdGlvbnMgdGhpcyBoYXMgZm9yIHRoZSBuZXR3b3JrIHN1YnN5c3RlbS4gVGhpcyB3YXJyYW50cyBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aC4uLiB3ZWxsLCBldmVyeXRoaW5nISBMZXQncyBnZXQgdG8gdGhlIHJvb3Qgb2YgdGhlIG1hdHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUzMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjU5Ljk1NjU1MTAyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRjb25maWcgTkVUX1JFRElSRUNUXFxuICA2MTpcXHRcXHRib29sXFxuICA2MjpcXHRcXG4gIDYzOlxcdGNvbmZpZyBTS0JfREVDUllQVEVEXFxuICA2NDpcXHRcXHRib29sXFxuICA2NTpcXHRcXG4gIDY2OlxcdGNvbmZpZyBTS0JfRVhURU5TSU9OU1xcbiAgNjc6XFx0XFx0Ym9vbFxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgTkVUX0RFVk1FTVxcbiAgNzA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgNzE6XFx0XFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuICA3MjpcXHRcXHRkZXBlbmRzIG9uIERNQV9TSEFSRURfQlVGRkVSXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxcbiAgNzQ6XFx0XFxuICA3NTpcXHRjb25maWcgTkVUX1NIQVBFUlxcbiAgNzY6XFx0XFx0Ym9vbFxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgTkVUX0NSQzMyQ1xcbiAgNzk6XFx0XFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1OS45NTY2MjM4NjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxODE2NDQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byBgTkVUX0RFVk1FTWAgaGVyZSwgYW5kIEknbSBpbW1lZGlhdGVseSBub3RpY2luZyBhIGRlcGVuZGVuY3k6IGl0J3MgYnVpbHQgdXBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gVGhhdCdzIG5vdCBlbnRpcmVseSB1bmV4cGVjdGVkLCBnaXZlbiB0aGUgbmF0dXJlIG9mIGRpcmVjdCBtZW1vcnkgYWNjZXNzIGFuZCB0aGUgbmVlZCBmb3IgZWZmaWNpZW50IGJ1ZmZlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgbmV0d29yayBzdGFjay4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBjbGFyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYERNQV9TSEFSRURfQlVGRkVSYCBpcyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgbGlrZWx5IGJha2VkIGluIGJhc2VkIG9uIHBsYXRmb3JtIHN1cHBvcnQsIG9yIGlmIGl0IHJlcXVpcmVzIGV4cGxpY2l0IGVuYWJsaW5nIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhpcyB1cGZyb250IHdpbGwgaGF2ZSBhIHRhbmdpYmxlIGltcGFjdCBpbiBvdXIgYnVpbGQgcHJvY2VzcyBhbmQgYW55IHJlbGF0ZWQgZGVidWcgY3ljbGVzLiBLbm93aW5nIHRoaXMsIEkgY2FuIGJlZ2luIHRvIHdvcmsgb3V0IHRoZSBvcHRpbWFsIGNvbmZpZyBmb3IgbXkgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTI6MDMuNDc0NzkxNTgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk1NzU0Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvS2NvbmZpZz0yMTM9c291cmNlIFxcXCJkcml2ZXJzL2Jhc2UvcmVnbWFwL0tjb25maWdcXFwiXFxuZHJpdmVycy9iYXNlL0tjb25maWctMjE0LVxcbmRyaXZlcnMvYmFzZS9LY29uZmlnOjIxNTpjb25maWcgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy0yMTYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MjowNS4yNzA1NTI2NjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0ODE0OTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBhIENvbmZpZ3VyYXRpb24gRmxhZyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIGJvb2xlYW4sIGEgY29uZmlndXJhdGlvbiBmbGFnIHNwZWNpZmljYWxseSwgYW5kIGl0J3MgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzICp1bnByb21wdGVkKi4gVGhhdCBtZWFucyBpdCdzIHByb2JhYmx5IGJlaW5nIHNldCBhcyBhIGNvbnNlcXVlbmNlIG9mICpzb21ldGhpbmcgZWxzZSogYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gSXQncyBub3Qgc29tZXRoaW5nIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHkgY2hvb3NpbmcsIGF0IGxlYXN0IG5vdCBkaXJlY3RseS4gSXQncyBkZXJpdmVkLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgZGVwZW5kZW5jeT8gV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgYWN0dWFsbHkgcHVsbGluZyB0aGUgdHJpZ2dlciBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgPyBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWcgZmlsZXMsIGh1bnQgZG93biB0aGUgY29uZGl0aW9uYWxzLCBhbmQgdW5kZXJzdGFuZCB0aGUgbG9naWMgdGhhdCBsZWFkcyB0byB0aGlzIGZsYWcgYmVpbmcgc2V0LiBLbm93aW5nIHdoYXQgKmNhdXNlcyogaXQgdG8gYmUgc2V0IGlzIGNyaXRpY2FsLiBJcyBpdCBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbj8gQSBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneT8gT3IgcGVyaGFwcyBhIGNvbXBhdGliaWxpdHkgcmVxdWlyZW1lbnQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBkZXJpdmVkIHNldHRpbmcgYmVmb3JlIEkgY2FuIGJlIGNvbmZpZGVudCBpbiBpdHMgcHJvcGVyIHVzZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBzZWUgd2hhdCdzIGNvbm5lY3RlZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI4NCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUyOjA4LjUxODcwNDg3M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyNjExODUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0PTY1PUFueSBleHBvcnRlcnMgb3IgdXNlcnMgb2YgdGhlIGRtYS1idWYgYnVmZmVyIHNoYXJpbmcgZnJhbWV3b3JrIG11c3QgaGF2ZSBhXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0OjY2OidzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVInIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZ3MuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0LTY3LVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL0tjb25maWc9Nj1jb25maWcgRFJNX0FDQ0VMX0hBQkFOQUxBQlNcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnLTEyLVxcdHNlbGVjdCBIV01PTlxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnOjEzOlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnLTE0LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9ND1jb25maWcgU1lOQ19GSUxFXFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02LVxcdGRlZmF1bHQgblxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZz01Mj1jb25maWcgRE1BQlVGX0tVTklUX1RFU1RcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTU0LVxcdGRlcGVuZHMgb24gS1VOSVRcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo1NTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy01Ni1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9NjA9bWVudWNvbmZpZyBETUFCVUZfSEVBUFNcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02MS1cXHRib29sIFxcXCJETUEtQlVGIFVzZXJsYW5kIE1lbW9yeSBIZWFwc1xcXCJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo2MjpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz04PW1lbnVjb25maWcgRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMy1cXHRzZWxlY3QgSTJDXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTQ6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTUtXFx0c2VsZWN0IFNZTkNfRklMRVxcbi0tXFxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWc9Nj1jb25maWcgVEVHUkFfSE9TVDFYXFxuLS1cXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZzo5OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnLTEwLVxcdHNlbGVjdCBURUdSQV9IT1NUMVhfQ09OVEVYVF9CVVNcXG4tLVxcbmRyaXZlcnMvaWlvL0tjb25maWc9MTU9Y29uZmlnIElJT19CVUZGRVJcXG5kcml2ZXJzL2lpby9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkVuYWJsZSBidWZmZXIgc3VwcG9ydCB3aXRoaW4gSUlPXFxcIlxcbmRyaXZlcnMvaWlvL0tjb25maWc6MTc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9paW8vS2NvbmZpZy0xOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNy1cXHRkZXBlbmRzIG9uICFBTFBIQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjg6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOS1cXHRzZWxlY3QgSVJRX1BPTExcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTQ0PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUVNXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00Ny1cXHRkZXBlbmRzIG9uIE1NVVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQ4OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9Mzk9Y29uZmlnIElPTU1VRkRfVEVTVFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDQtXFx0ZGVwZW5kcyBvbiBJT01NVV9QVF9BTURWMT15IHx8IElPTU1VRkQ9SU9NTVVfUFRfQU1EVjFcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzo0NTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy00Ni1cXHRzZWxlY3QgSU9NTVVGRF9EUklWRVJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTM9Y29uZmlnIFZJREVPQlVGMl9DT1JFXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc6NDpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy01LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0xMz1jb25maWcgVklERU9CVUYyX0RNQV9DT05USUdcXG4tLVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTE2LVxcdHNlbGVjdCBWSURFT0JVRjJfTUVNT1BTXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc6MTc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMTgtXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc9MTk9Y29uZmlnIFZJREVPQlVGMl9WTUFMTE9DXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yMi1cXHRzZWxlY3QgVklERU9CVUYyX01FTU9QU1xcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjIzOlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTI0LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWc9MT1jb25maWcgVklERU9fVEVHUkFfVkRFXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy02LVxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWc6NzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy04LVxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuLS1cXG5kcml2ZXJzL21pc2MvS2NvbmZpZz0zMDE9Y29uZmlnIFFDT01fRkFTVFJQQ1xcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWctMzA0LVxcdGRlcGVuZHMgb24gUlBNU0dcXG5kcml2ZXJzL21pc2MvS2NvbmZpZzozMDU6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9taXNjL0tjb25maWctMzA2LVxcdHNlbGVjdCBRQ09NX1NDTVxcbi0tXFxuZHJpdmVycy90ZWUvS2NvbmZpZz0zPW1lbnVjb25maWcgVEVFXFxuLS1cXG5kcml2ZXJzL3RlZS9LY29uZmlnLTYtXFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxcbmRyaXZlcnMvdGVlL0tjb25maWc6NzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL3RlZS9LY29uZmlnLTgtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTkzOlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy94ZW4vS2NvbmZpZz0xNDU9Y29uZmlnIFhFTl9HTlRERVZfRE1BQlVGXFxuLS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0Ny1cXHRkZXBlbmRzIG9uIFhFTl9HTlRERVYgXFx1MDAyNlxcdTAwMjYgWEVOX0dSQU5UX0RNQV9BTExPQ1xcbmRyaXZlcnMveGVuL0tjb25maWc6MTQ4OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMveGVuL0tjb25maWctMTQ5LVxcdGhlbHBcXG4tLVxcbnNhbXBsZXMvS2NvbmZpZz0yMzA9Y29uZmlnIFNBTVBMRV9WRklPX01ERVZfTUJPQ0hTXFxuLS1cXG5zYW1wbGVzL0tjb25maWctMjMzLVxcdHNlbGVjdCBWRklPX01ERVZcXG5zYW1wbGVzL0tjb25maWc6MjM0OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbnNhbXBsZXMvS2NvbmZpZy0yMzUtXFx0aGVscFxcbi0tXFxuc291bmQvc29jL2ZzbC9LY29uZmlnPTY9Y29uZmlnIFNORF9TT0NfRlNMX0FTUkNcXG4tLVxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gSEFTX0RNQVxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZzo5OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTI6MTAuMjQ0ODMxNDc5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMjAzNjE1NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBPcHRpbWFsIFJlc291cmNlIEFsbG9jYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHN5c3RlbSwgYW5kIHRoZSBuZWVkIGZvciBgUEFHRV9QT09MYCBoYXMgY29tZSB0byBteSBhdHRlbnRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHRyYWNlIGJhY2sgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29tcG9uZW50cywgbW9kdWxlcywgb3Igc3Vic3lzdGVtcyBhcmUgbGV2ZXJhZ2luZyB0aGlzIGBQQUdFX1BPT0xgLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQga25vd2luZyBpdCdzICp1c2VkKiwgYnV0ICpob3cqIGl0J3Mgc2VsZWN0ZWQg4oCTIHdoYXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLCBlbnZpcm9ubWVudGFsIGZhY3RvcnMsIG9yIGV2ZW4gZHluYW1pYyBydW50aW1lIGRlY2lzaW9ucyBkaWN0YXRlIGl0cyBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGllY2VzIG9mIGNvZGUgYWN0dWFsbHkgcGVyZm9ybSB0aGUgc2VsZWN0aW9uLCB3aGF0IGNyaXRlcmlhIGFyZSB1c2VkLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBjaG9pY2UuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIG5leHQgc3RlcCB0byBldmFsdWF0ZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IGFuZCBhdm9pZCB1bmV4cGVjdGVkIG1lbW9yeSBhbGxvY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNjQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MzoxMy40NDg0NTEwNDNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3Nzg1Mzg2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz00ODc9Y29uZmlnIE5FVF9ERVZMSU5LXFxuLS1cXG5uZXQvS2NvbmZpZy00OTAtXFxubmV0L0tjb25maWc6NDkxOmNvbmZpZyBQQUdFX1BPT0xcXG5uZXQvS2NvbmZpZy00OTItXFx0Ym9vbFxcbm5ldC9LY29uZmlnLTQ5My1cXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xcbm5ldC9LY29uZmlnLTQ5NS1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTM6MTcuMjI2OTk5MzQ5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTAxMjcwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuIEhlcmUncyBob3cgSSdtIHRoaW5raW5nIGFib3V0IGl0OlxuXG4qKkFuYWx5emluZyB0aGUgUEFHRV9QT09MIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIG15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHNlbGVjdGluZyBgUEFHRV9QT09MYC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYTsgdW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBtZWNoYW5pc20gaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBhZ2luZy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjYWxscywgY29uZGl0aW9ucywgb3IgYWxnb3JpdGhtcyB0aGF0IHJlc3VsdCBpbiB0aGUgc2VsZWN0aW9uIG9mIHRoaXMgcGFydGljdWxhciBwb29sLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBzZXF1ZW5jZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBmbGFncyBvciBwYXJhbWV0ZXJzIGluZmx1ZW5jaW5nIHRoZSBjaG9pY2U/IElzIHRoaXMgYSBkZWZhdWx0IG9wdGlvbiwgb3IgaXMgaXQgc2VsZWN0ZWQgYmFzZWQgb24gc29tZSBoZXVyaXN0aWNzPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFzIGZhciBhcyBwb3NzaWJsZSB0byBncmFzcCB0aGUgdW5kZXJseWluZyBsb2dpYy4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBjb25kaXRpb25hbHMsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIG9yIGRlcGVuZGVuY2llcyB0aGF0IGxlYWQgdG8gdGhpcyBzZWxlY3Rpb24uIFVsdGltYXRlbHksIEkgd2FudCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgcG9vbCBpcyBiZWluZyBjaG9zZW4gaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQuIEtub3dpbmcgdGhlIFwid2h5XCIgaXMga2V5IHRvIG9wdGltaXphdGlvbiBhbmQgZGVidWdnaW5nIGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjc3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTM6MjAuMTM3MTMwMDMyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTAyMjYyNzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQUdFX1BPT0xcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz00MzU9Y29uZmlnIFZFVEhcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBldGhlcm5ldCBwYWlyIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQzNzpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ3LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg3LVxcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjExOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIxLVxcdHNlbGVjdCBORVRfQUlST0hBX05QVVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiA2NEJJVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgwLVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjgxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVxcdHNlbGVjdCBCUk9BRENPTV9QSFkgaWYgQVJDSF9CQ00yODM1XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTMtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MS1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1BcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc1LVxcdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI3NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMS1cXHRzZWxlY3QgRklYRURfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVxcdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTQtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6OTU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTUzLVxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjE1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQ29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcXFwiIGlmIENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnOjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY1OlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkwLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMC1cXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIzLVxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Nj1jb25maWcgTUxYNF9FTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTExLVxcdHNlbGVjdCBNTFg0X0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBNTFg1X0NPUkVfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMxLVxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzM6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNS1cXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgTUxYU1dfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzctXFx0ZGVmYXVsdCBtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXFx0c2VsZWN0IFBDU19YUENTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTAtXFx0c2VsZWN0IFZDQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0yOD1jb25maWcgTEFOOTY5WF9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI1LVxcdHNlbGVjdCBORVRfU0hBUEVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZzoyNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNy1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjExNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9Mjk9Y29uZmlnIFJBVkJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cXHRzZWxlY3QgTURJT19CSVRCQU5HXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzctXFx0c2VsZWN0IFBIWUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc9MjU9Y29uZmlnIFNOSV9ORVRTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZzoyOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMzAtXFx0c2VsZWN0IE1JSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXFx0c2VsZWN0IFBDU19YUENTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwLVxcdHNlbGVjdCBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc6Mjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVxcdHNlbGVjdCBGV19MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NTA9Y29uZmlnIFRJX0NQU1dcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXFx0c2VsZWN0IE1GRF9TWVNDT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjU2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU3LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVxcdGRlcGVuZHMgb24gVElfQ1BUUyB8fCAhVElfQ1BUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzA6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzEtXFx0c2VsZWN0IFRJX0RBVklOQ0lfTURJT1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAzLVxcdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMDQ9Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVxcdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMC1cXHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yPWNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWctMzctXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjI0LjIzOTQwMTM3MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTIxMTg4MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIGZvciBaZXJvLUNvcHkgYW5kIFRlc3RhYmlsaXR5KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zIGludGVyYWN0LCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gemVyby1jb3B5IG5ldHdvcmsgb3BlcmF0aW9ucyBhbmQgb3VyIHRlc3Rpbmcgc3RyYXRlZ3kuIEkndmUgYmVlbiB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdhbnQgdG8gbWFrZSBzdXJlIHdlJ3JlIGNvdmVyaW5nIGFsbCBiYXNlcy4gSXQgc2VlbXMgdGhhdCBgTkVUX0RFVk1FTWAgZ2V0cyBlbmFibGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBib3RoIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgIGFyZSBzZXQuIEFuZCBgUEFHRV9QT09MYCBpdHNlbGYgaXMgc2VsZWN0ZWQgYnkgYEJQRl9TWVNDQUxMYCBpZiB0aGUgYE5FVGAgb3B0aW9uIGlzIHR1cm5lZCBvbi4gUGx1cywgYERNQV9TSEFSRURfQlVGRkVSYCBpcyBwdWxsZWQgaW4gYnkgb3RoZXIgdGhpbmdzIGxpa2UgYFNZTkNfRklMRWAsIGBETUFCVUZfSEVBUFNgLCBhbmQgYERSTWAuXG5cbkluaXRpYWxseSwgSSB0aG91Z2h0LCBcIkxldCdzIGJlIGV4cGxpY2l0IGFuZCBqdXN0IGFkZCBgTkVUX0RFVk1FTWAsIGBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdlJ3JlIGV4ZXJjaXNpbmcgdGhlc2UgZmVhdHVyZXMgaW4gb3VyIHRlc3RzLlwiIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBORVRfREVWTUVNYCBpcyBgZGVmX2Jvb2wgeWAsIG1lYW5pbmcgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbywgaWYgd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldCwgd2UgYXJlIGNvdmVyZWQuIFRoYXQgc2FpZCwgSSdtIHRoaW5raW5nIHdlIGNhbiBleHBsaWNpdGx5IHNwZWNpZnkgYE5FVF9ERVZNRU1gIGluIGBFbmFibGVDb25maWdzYCBhbnl3YXkgdG8gZW5zdXJlIGl0J3MgdGVzdGVkLiBBY3R1YWxseSwgc2luY2UgaXQncyBhIGJvb2xlYW4sIHdlIGNhbiBqdXN0IHNheSBgTkVUX0RFVk1FTWAsIHNvIHRoYXQgaXMgcHJvYmFibHkgdGhlIHNpbXBsZXN0IHdheS5cblxuTm93LCBsZXQncyBjaXJjbGUgYmFjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBhbmQgc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC4gSSBzZWUgdGhpcyBmdW5jdGlvbiwgd2l0aCB0aGUgYGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpYCBjaGVjaywgaXMgcGFydCBvZiBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBib3RoIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gLiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBpcyB0aGVuIGNhbGxlZCBieSBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gU28sIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzIGxpa2VseSBhIGtleSBlbnRyeSBwb2ludCB0byBsb29rIGF0LlxuXG5Ib3dldmVyLCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRvIGF2b2lkIFwiZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnNcIiBiZWNhdXNlIHRoZXkgY2FuIHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9uLiBJJ20gd29uZGVyaW5nIGlmIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzICp0b28qIGdlbmVyaWMuIEkgbWVhbiwgaXQncyB0aGUgY29yZSBvZiBUQ1Agc2VuZGluZywgc28gaXQncyBib3VuZCB0byBiZSBzdXBlciBhY3RpdmUuIFllcywgaXQgaXMuIExldCdzIG5vdCB1c2UgdGhhdCwgd2UgbmVlZCB0byBsb29rIGZvciBzb21ldGhpbmcgbGVzcyBnZW5lcmljLlxuXG5Pa2F5LCB3aGF0IGFib3V0IGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmA/IFRoYXQncyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgc28gaXQncyBhY2Nlc3NpYmxlLiBMZXQncyBzdGFydCB3aXRoIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTQyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjMwLjc2MDU5NDY2NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwMzY4MjgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2MzppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3My17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc0OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cXHUwMDNlc2ssIHNrYiwgXFx1MDAyNm1zZy1cXHUwMDNlbXNnX2l0ZXIsIGxlbixcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzUtXFx0XFx0XFx0XFx0ICAgICAgIE5VTEwpO1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NDk6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc3NC19XFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NzU6RVhQT1JUX1NZTUJPTChfX3plcm9jb3B5X3NnX2Zyb21faXRlcik7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc4Nz1pbnQgemVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk0LVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzk1OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTYtfVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MzMtXFxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcXHRlcnIgPSBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrLCBza2IsIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sXFxubmV0L2NvcmUvc2tidWZmLmMtMTkzNS1cXHRcXHRcXHRcXHQgICAgICBiaW5kaW5nKTtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz04MD1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfZmlsbF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cXHRpZiAoemNvcHkpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjg4OlxcdFxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIE5VTEwsIHNrYixcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODktXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTIxMj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8sXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjM5LVxcdC8qIElmICd2c2snICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDA6XFx0ICogd2lsbCBuZXZlciBjYWxsICdfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJyBiZWxvdyB3aXRob3V0XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0MS1cXHQgKiBzZXR0aW5nIHNrYiBvd25lciBpbiAnc2tiX3NldF9vd25lcl93KCknLiBUaGUgb25seSBjYXNlXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ2LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XFx0LyogU2V0IG93bmVyIGhlcmUsIGJlY2F1c2UgJ19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCknIHVzZXNcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVxcdCAqIG93bmVyIG9mIHNrYiB3aXRob3V0IGNoZWNrIHRvIHVwZGF0ZSAnc2tfd21lbV9hbGxvYycuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjM0LjQ2NDI4NDY1MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM5NTk2ODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFeGFtaW5pbmcgUG90ZW50aWFsIFplcm8tQ29weSBTeW1ib2xzKipcblxuUmlnaHQsIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgaXMgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGFuYWx5c2lzLiBJdCBzZWVtcyB0byBlbmNhcHN1bGF0ZSBhIGNvcmUgemVyby1jb3B5IG9wZXJhdGlvbi4gQnV0IHdhaXQsIHdoYXQgYWJvdXQgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWA/IFRoYXQncyBhbHNvIGV4cG9ydGVkIGFuZCBub3Qgc3RhdGljLCB3aGljaCBtYWtlcyBpdCBhbm90aGVyIGludGVyZXN0aW5nIGNhbmRpZGF0ZSB0byBpbnZlc3RpZ2F0ZS4gSXQgZmVlbHMgbGlrZSB0aGVyZSBtaWdodCBiZSBzb21lIG92ZXJsYXAgb3IgYSBkaWZmZXJlbnQgYXBwcm9hY2ggcmVwcmVzZW50ZWQgdGhlcmUuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgcm9sZSBvZiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTWF5YmUgaXQncyBhbiBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24gb3IgcmVsYXRlZCBpbiBzb21lIG1hbm5lci4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3Mjk0LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTM6MzguMjAzODg1Mzc4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI5OTcwODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3Ny1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Nzg6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzc5LVxcdFxcdFxcdCAgICAgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTkxMD1FWFBPUlRfU1lNQk9MX0dQTChtc2dfemVyb2NvcHlfdWJ1Zl9vcHMpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTEtXFxubmV0L2NvcmUvc2tidWZmLmM6MTkxMjppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTEzLVxcdFxcdFxcdCAgICAgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTk0OS19XFxubmV0L2NvcmUvc2tidWZmLmM6MTk1MDpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0pO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NTEtXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMTMzOC1cXG5uZXQvaXB2NC90Y3AuYzoxMzM5OlxcdFxcdFxcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXFxubmV0L2lwdjQvdGNwLmMtMTM0MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgYmluZGluZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjQxLjkzNDAzNTc5NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzQ1MjY2NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGxvb2tzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIGRlZXBlciBkaXZlLiBJJ3ZlIGdvdCBhIGZlZWxpbmcgaXQncyBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuIExldCdzIHNlZS4uLiBJJ2xsIGRvdWJsZS1jaGVjayBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYy4gSG1tLCBubywgaXQncyBub3QgYSB2aWFibGUgZm9jdXMgc3ltYm9sLCB1bmZvcnR1bmF0ZWx5LlxuXG5BbHJpZ2h0LCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgdGhhdCBjaGVjazogYGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkgcmV0dXJuIC1FRkFVTFQ7YC4gQWgsIHJpZ2h0LCB0aGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZeKAlGl0IGV4cGxpY2l0bHkgcHJldmVudHMgdGhlIHVuZGVzaXJhYmxlIHNpdHVhdGlvbiBvZiBtaXhpbmcgcmVhZGFibGUgYW5kIGRldm1lbSBmcmFnbWVudHMgd2l0aGluIHRoZSBzYW1lIFNLQi4gWWVwLCB0aGF0J3MgZGVmaW5pdGVseSBhIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSBhIGNoYW5nZSB3b3J0aCB2ZXJpZnlpbmcgd2l0aCByaWdvcm91cyB0ZXN0aW5nLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHdoaWNoIGNvbmZpZ3VyYXRpb25zIHRoaXMgbWlnaHQgaW50ZXJhY3Qgd2l0aC4gSXQgbG9va3MgbGlrZSBgTkVUX0RFVk1FTWAgaXMgdGhlIGtleSBjb25maWcgaGVyZTsgaXQgZGVwZW5kcyBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gT2theSwgc28gSSdsbCBhZGQgdGhvc2UgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUaGUgZXhpc3RpbmcgZm9jdXMgc3ltYm9scyBhcmUgc3RpbGwgZ29vZDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCBhbmQgb2YgY291cnNlIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBjb25maXJtIHRoYXQgYE5FVF9ERVZNRU1gIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBlbmFibGVyLiBZdXAsIGl0J3MgdGhlIG9uZS4gQW5kIG5vdywgSSBzaG91bGQgYWxzbyB2ZXJpZnkgd2hlcmUgYHNrYl9mcmFnc19yZWFkYWJsZWAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlcnMuIEp1c3QgbWFraW5nIHN1cmUgSSBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk4MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1Mzo0Ny4yNzkzMDUxNjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTgzNTc2NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2tiX2ZyYWdzX3JlYWRhYmxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTQ3MT1zdGF0aWMgbmV0ZGV2X3R4X3QgYm54dF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01NzUtXFx0aWYgKGZyZWVfc2l6ZSA9PSBicC1cXHUwMDNldHhfcmluZ19zaXplIFxcdTAwMjZcXHUwMDI2IGxlbmd0aCBcXHUwMDNjPSBicC1cXHUwMDNldHhfcHVzaF90aHJlc2ggXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1NzY6XFx0ICAgIHNrYl9mcmFnc19yZWFkYWJsZShza2IpIFxcdTAwMjZcXHUwMDI2ICFsZmxhZ3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01NzctXFx0XFx0c3RydWN0IHR4X3B1c2hfYnVmZmVyICp0eF9wdXNoX2J1ZiA9IHR4ci1cXHUwMDNldHhfcHVzaDtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTg4ND1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3pjb3B5X2Rvd25ncmFkZV9tYW5hZ2VkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE4OTAtLyogUmV0dXJuIHRydWUgaWYgZnJhZ3MgaW4gdGhpcyBza2IgYXJlIHJlYWRhYmxlIGJ5IHRoZSBob3N0LiAqL1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTg5MTpzdGF0aWMgaW5saW5lIGJvb2wgc2tiX2ZyYWdzX3JlYWRhYmxlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xODkyLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTEyMzM9c3RhdGljIGlubGluZSBib29sIHRjcF9za2JfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBza19idWZmICp0byxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTEyMzktXFx0XFx0ICAgICAgc2tiX3B1cmVfemNvcHlfc2FtZSh0bywgZnJvbSkgXFx1MDAyNlxcdTAwMjZcXG5pbmNsdWRlL25ldC90Y3AuaDoxMjQwOlxcdFxcdCAgICAgIHNrYl9mcmFnc19yZWFkYWJsZSh0bykgPT0gc2tiX2ZyYWdzX3JlYWRhYmxlKGZyb20pKTtcXG5pbmNsdWRlL25ldC90Y3AuaC0xMjQxLX1cXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9Mzg5PXN0YXRpYyBpbnQgX19za2JfZGF0YWdyYW1faXRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy00MTAtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo0MTE6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTQxMi1cXHRcXHRnb3RvIHNob3J0X2NvcHk7XFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzNT1pbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTYzOS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjY0MDpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjQxLVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MTQtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MTU6XFx0aWYgKGkgXFx1MDAyNlxcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MTYtXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0zNTY5PWludCBza2JfY2hlY2tzdW1faGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMzU4MS1cXG5uZXQvY29yZS9kZXYuYzozNTgyOlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHtcXG5uZXQvY29yZS9kZXYuYy0zNTgzLVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9Mzk5MT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTM5OTYtXFxubmV0L2NvcmUvZGV2LmM6Mzk5NzpcXHRpZiAobGlrZWx5KHNrYl9mcmFnc19yZWFkYWJsZShza2IpIHx8XFxubmV0L2NvcmUvZGV2LmMtMzk5OC1cXHRcXHQgICBkZXYtXFx1MDAzZW5ldG1lbV90eCA9PSBORVRNRU1fVFhfTk9fRE1BKSlcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5OTc9aW50IHNrYl9jb3B5X3VidWZzKHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMjAwNi1cXG5uZXQvY29yZS9za2J1ZmYuYzoyMDA3OlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtMjAwOC1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTIxNzc9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMjE4Mi1cXG5uZXQvY29yZS9za2J1ZmYuYzoyMTgzOlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtMjE4NC1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTI1MDI9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5X2V4cGFuZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMjUxMi1cXG5uZXQvY29yZS9za2J1ZmYuYzoyNTEzOlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtMjUxNC1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTI4MDg9c3RhdGljIGludCBwc2tiX3RyaW1fcmNzdW1fY29tcGxldGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTI4MTEtXFxubmV0L2NvcmUvc2tidWZmLmM6MjgxMjpcXHRpZiAoc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHtcXG5uZXQvY29yZS9za2J1ZmYuYy0yODEzLVxcdFxcdHNrYi1cXHUwMDNlY3N1bSA9IGNzdW1fYmxvY2tfc3ViKHNrYi1cXHUwMDNlY3N1bSxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTI4NzU9dm9pZCAqX19wc2tiX3B1bGxfdGFpbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZGVsdGEpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0yODgyLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjI4ODM6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvY29yZS9za2J1ZmYuYy0yODg0LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MzAxOT1pbnQgc2tiX2NvcHlfYml0cyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCB2b2lkICp0bywgaW50IGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMwMzgtXFxubmV0L2NvcmUvc2tidWZmLmM6MzAzOTpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMwNDAtXFx0XFx0Z290byBmYXVsdDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTMyMDU9c3RhdGljIGJvb2wgX19za2Jfc3BsaWNlX2JpdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMyMjctXFx0ICovXFxubmV0L2NvcmUvc2tidWZmLmM6MzIyODpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMyMjktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MzQ0OD1pbnQgc2tiX3N0b3JlX2JpdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgY29uc3Qgdm9pZCAqZnJvbSwgaW50IGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM0NjYtXFxubmV0L2NvcmUvc2tidWZmLmM6MzQ2NzpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM0NjgtXFx0XFx0Z290byBmYXVsdDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTM1Mjk9X193c3VtIHNrYl9jaGVja3N1bShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBfX3dzdW0gY3N1bSlcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM1NDYtXFxubmV0L2NvcmUvc2tidWZmLmM6MzU0NzpcXHRpZiAoV0FSTl9PTl9PTkNFKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkpXFxubmV0L2NvcmUvc2tidWZmLmMtMzU0OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTM2MTE9X193c3VtIHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM2MzItXFxubmV0L2NvcmUvc2tidWZmLmM6MzYzMzpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM2MzQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0zNzAwPXUzMiBza2JfY3JjMzJjKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsIGludCBsZW4sIHUzMiBjcmMpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0zNzE0LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjM3MTU6XFx0aWYgKFdBUk5fT05fT05DRSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM3MTYtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz00NDQwPXVuc2lnbmVkIGludCBza2Jfc2VxX3JlYWQodW5zaWduZWQgaW50IGNvbnN1bWVkLCBjb25zdCB1OCAqKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy00NDYxLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjQ0NjI6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc3QtXFx1MDAzZWN1cl9za2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTQ0NjMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz02MTcyPWJvb2wgc2tiX3RyeV9jb2FsZXNjZShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBza19idWZmICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtNjE5MS1cXG5uZXQvY29yZS9za2J1ZmYuYzo2MTkyOlxcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoZnJvbSkgIT0gc2tiX2ZyYWdzX3JlYWRhYmxlKHRvKSlcXG5uZXQvY29yZS9za2J1ZmYuYy02MTkzLVxcdFxcdHJldHVybiBmYWxzZTtcXG5uZXQvY29yZS9za2J1ZmYuYy02MTk0LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjYxOTU6XFx0aWYgKGxlbiBcXHUwMDNjPSBza2JfdGFpbHJvb20odG8pIFxcdTAwMjZcXHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShmcm9tKSkge1xcbm5ldC9jb3JlL3NrYnVmZi5jLTYxOTYtXFx0XFx0aWYgKGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTcwNjI9dm9pZCBza2JfY29uZGVuc2Uoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTcwNjUtXFx0XFx0aWYgKHNrYi1cXHUwMDNlZGF0YV9sZW4gXFx1MDAzZSBza2ItXFx1MDAzZWVuZCAtIHNrYi1cXHUwMDNldGFpbCB8fFxcbm5ldC9jb3JlL3NrYnVmZi5jOjcwNjY6XFx0XFx0ICAgIHNrYl9jbG9uZWQoc2tiKSB8fCAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtNzA2Ny1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvaXB2NC90Y3AuYz0yMTk1PXN0YXRpYyBpbnQgdGNwX3plcm9jb3B5X3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMjI2OC1cXG5uZXQvaXB2NC90Y3AuYzoyMjY5OlxcdFxcdFxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2lwdjQvdGNwLmMtMjI3MC1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTI0OTk9c3RhdGljIGludCB0Y3BfcmVjdm1zZ19kbWFidWYoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMjUxNC1cXG5uZXQvaXB2NC90Y3AuYzoyNTE1OlxcdFxcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkge1xcbm5ldC9pcHY0L3RjcC5jLTI1MTYtXFx0XFx0XFx0ZXJyID0gLUVOT0RFVjtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI1NjEtXFxubmV0L2lwdjQvdGNwLmM6MjU2MjpcXHRcXHRcXHQvKiAhc2tiX2ZyYWdzX3JlYWRhYmxlKCkgc2hvdWxkIGluZGljYXRlIHRoYXQgQUxMIHRoZVxcbm5ldC9pcHY0L3RjcC5jLTI1NjMtXFx0XFx0XFx0ICogZnJhZ3MgaW4gdGhpcyBza2IgYXJlIGRtYWJ1ZiBuZXRfaW92cy4gV2UncmUgY2hlY2tpbmdcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI1NjUtXFx0XFx0XFx0ICogaGVyZS4gSWYgdGhlIHRjcCBzdGFjayBpcyBub3Qgc2V0dGluZ1xcbm5ldC9pcHY0L3RjcC5jOjI1NjY6XFx0XFx0XFx0ICogc2tiX2ZyYWdzX3JlYWRhYmxlKCkgY29ycmVjdGx5LCB3ZSBzdGlsbCBkb24ndCB3YW50XFxubmV0L2lwdjQvdGNwLmMtMjU2Ny1cXHRcXHRcXHQgKiB0byBjcmFzaCBoZXJlLlxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MjY1NT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI4MzUtXFx0XFx0XFx0aWYgKGxhc3RfY29waWVkX2RtYWJ1ZiAhPSAtMSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9pcHY0L3RjcC5jOjI4MzY6XFx0XFx0XFx0ICAgIGxhc3RfY29waWVkX2RtYWJ1ZiAhPSAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2lwdjQvdGNwLmMtMjgzNy1cXHRcXHRcXHRcXHRicmVhaztcXG5uZXQvaXB2NC90Y3AuYy0yODM4LVxcbm5ldC9pcHY0L3RjcC5jOjI4Mzk6XFx0XFx0XFx0aWYgKHNrYl9mcmFnc19yZWFkYWJsZShza2IpKSB7XFxubmV0L2lwdjQvdGNwLmMtMjg0MC1cXHRcXHRcXHRcXHRlcnIgPSBza2JfY29weV9kYXRhZ3JhbV9tc2coc2tiLCBvZmZzZXQsIG1zZyxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI4NzAtXFxubmV0L2lwdjQvdGNwLmM6Mjg3MTpcXHRcXHRsYXN0X2NvcGllZF9kbWFidWYgPSAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYik7XFxubmV0L2lwdjQvdGNwLmMtMjg3Mi1cXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTU3NzM9dGNwX2NvbGxhcHNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHJiX3Jvb3QgKnJvb3QsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01Nzg2LVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjU3ODc6XFx0XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01Nzg4LVxcdFxcdFxcdGdvdG8gc2tpcF90aGlzO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNTgwOS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo1ODEwOlxcdFxcdGlmIChuIFxcdTAwMjZcXHUwMDI2IG4gIT0gdGFpbCBcXHUwMDI2XFx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUobikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODExLVxcdFxcdCAgICB0Y3Bfc2tiX2Nhbl9jb2xsYXBzZV9yeChza2IsIG4pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODIyLVxcdCAgICAoVENQX1NLQl9DQihza2IpLVxcdTAwM2V0Y3BfZmxhZ3MgXFx1MDAyNiAoVENQSERSX1NZTiB8IFRDUEhEUl9GSU4pKSB8fFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjU4MjM6XFx0ICAgICFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODI0LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4NjUtXFx0XFx0XFx0XFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZXRjcF9mbGFncyBcXHUwMDI2IChUQ1BIRFJfU1lOIHwgVENQSERSX0ZJTikpIHx8XFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NTg2NjpcXHRcXHRcXHRcXHQgICAgIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4NjctXFx0XFx0XFx0XFx0XFx0Z290byBlbmQ7XFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MzQ5MT1zdGF0aWMgYm9vbCB0Y3BfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNDk2LVxcdFxcdHJldHVybiBmYWxzZTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM6MzQ5NzpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNDk4LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTcwMT1zdGF0aWMgdW5zaWduZWQgaW50IG5mdWxubF9nZXRfY29weV9sZW4oY29uc3Qgc3RydWN0IG5mX2xvZ2luZm8gKmxpLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtNzA5LVxcdFxcdGNvcHlfbGVuID0gbGktXFx1MDAzZXUudWxvZy5jb3B5X2xlbjtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzo3MTA6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy03MTEtXFx0XFx0bGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9NjkzPXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZxbmxfZ2V0X2RhdGFfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICplbnRza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTY5Ny1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjY5ODpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShlbnRza2IpKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtNjk5LVxcdFxcdGRhdGFfbGVuID0gc2tiX2hlYWRsZW4oZW50c2tiKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjExNT1zdGF0aWMgaW50IHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjE1Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIxNTM6XFx0c25hcGxlbiA9IHNrYl9mcmFnc19yZWFkYWJsZShza2IpID8gc2tiLVxcdTAwM2VsZW4gOiBza2JfaGVhZGxlbihza2IpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjE1NC1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjIyOD1zdGF0aWMgaW50IHRwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyNzItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMjczOlxcdHNuYXBsZW4gPSBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSA/IHNrYi1cXHUwMDNlbGVuIDogc2tiX2hlYWRsZW4oc2tiKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyNzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjUxLjY5NzY2OTQ1NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzg1ODY0Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgQ29yZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgYWRkZWQgYGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkgcmV0dXJuIC1FRkFVTFQ7YCBpbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGNhdGNoZXMgbXkgZXllLiBJdCdzIGEgcHJvdGVjdGlvbiBtZWNoYW5pc207IGl0J3MgcHJldmVudGluZyB0aGUgZmlsbGluZyBvZiBhIGRldm1lbSBTS0IgaWYgaXQgYWxyZWFkeSBjb250YWlucyByZWFkYWJsZSBmcmFnbWVudHMuIFRoYXQncyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBJJ2xsIGdpdmUgdGhlbSB0aGF0LlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gLiBOb3csIGxldCdzIHRyYWNlIHRoaXMuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAsIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gIGlzIGNhbGxlZCBpbiBgbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jYCBieSBib3RoIGB2aXJ0aW9fdHJhbnNwb3J0X2ZpbGxfc2tiYCBhbmQgYHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiYC5cblxuV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZSB0aGF0IGBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbWAgaXMgcGFzc2luZyBhIGBOVUxMYCBmb3IgYGJpbmRpbmdgLiBUaGlzIG1lYW5zIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgaXMgKm9ubHkqIGNhbGxlZCB3aGVuIGBiaW5kaW5nYCBpc24ndCBgTlVMTGAuIEFuZCBJIGNhbiBzZWUgdGhhdCBgYmluZGluZ2AgaXMgKm9ubHkqIG5vbi1gTlVMTGAgaW4gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIEdvdCBpdC4gVGhhdCBtZWFucyBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBpcyB0aGUgbW9yZSBpbXBvcnRhbnQgZnVuY3Rpb24gdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgZWZmb3J0cy4gSXQgaXMgbW9yZSBsaWtlbHkgdG8gdHJpZ2dlciB0aGUgbmV3IGNvZGUuXG5cbk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2sgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLiAgYE5FVF9ERVZNRU1gIHJlcXVpcmVzIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgLiBPa2F5LiBJJ2xsIGFkZCBgTkVUX0RFVk1FTWAgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgYWRkIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgIHRvIGBFbmFibGVDb25maWdzYCBhcyB3ZWxsLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGlmIGl0IGlzbid0IGVuYWJsZWQgYnkgZGVmYXVsdC5cblxuQWxyaWdodCwgbGV0J3MgY29uc29saWRhdGUgdGhpcyBpbnRvIGEgY2xlYXIgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUuXG4qICAgKipSZWFzb25pbmc6KiogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCB0aGF0IHdpbGwgcHJldmVudCB0aGUgY29tYmluYXRpb24gb2YgcmVhZGFibGUgZnJhZ21lbnRzIGFuZCBkZXZtZW0gZnJhZ21lbnRzIHdpdGhpbiB0aGUgc2FtZSBTS0IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBuZXR3b3JrIGNvcmUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBkZXZtZW0gVENQLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIEknbSBnb2luZyB0byBzZXQgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCB0byBpbnZlc3RpZ2F0ZSB0aGUgY29kZSwgYW5kIGtlZXAgYSBmb2N1cyBvbiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYC5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSBuZWVkIHRvIGFkZCBgTkVUX0RFVk1FTWAsIGBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBgUEFHRV9QT09MYC5cblxuTGV0J3MgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTM1LCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1Mzo1OS40ODM1MzkwODJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE3ODE5MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZNRU1cIixcbiAgICBcIkRNQV9TSEFSRURfQlVGRkVSXCIsXG4gICAgXCJQQUdFX1BPT0xcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiLFxuICAgIFwic2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgdG8gcHJldmVudCBtaXhpbmcgcmVhZGFibGUgZnJhZ3Mgd2l0aCBkZXZtZW0gZnJhZ3MgaW4gdGhlIHNhbWUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgY29yZSBkYXRhZ3JhbSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGZvciBkZXZtZW0gVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZNRU1cIixcbiAgICBcIkRNQV9TSEFSRURfQlVGRkVSXCIsXG4gICAgXCJQQUdFX1BPT0xcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiLFxuICAgIFwic2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgdG8gcHJldmVudCBtaXhpbmcgcmVhZGFibGUgZnJhZ3Mgd2l0aCBkZXZtZW0gZnJhZ3MgaW4gdGhlIHNhbWUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgY29yZSBkYXRhZ3JhbSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGZvciBkZXZtZW0gVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowvjhf8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 00:14:19 +0000 UTC FinishedAt: 2026-07-28 00:54:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bd0e9289e2642f6a5c54faad304ce0f41e926d22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "DMA_SHARED_BUFFER", "PAGE_POOL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "bd0e9289e2642f6a5c54faad304ce0f41e926d22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_DEVMEM", "DMA_SHARED_BUFFER", "PAGE_POOL" ], "series_id": "9e60fd40-f89d-44d7-9eda-ca7f4ef03e59" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__zerocopy_sg_from_iter", "skb_zerocopy_iter_stream" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7RE1BX1NIQVJFRF9CVUZGRVImIzM0OywKICAgICYjMzQ7UEFHRV9QT09MJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgwYWYxZmNkODhlZWFiYjVhYTY2NmI2N2FhY2M2YmM2NzYxNTg3ZjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAwMDo1MDoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xuaW5kZXggYzI4NWM2NDY1OTIzZTQuLjE3M2I1ZDk3YmQ0MDlhIDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZGF0YWdyYW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGF0YWdyYW0uY1xuQEAgLTcxMiw2ICYjNDM7NzEyLDkgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIFx0c2l6ZV90IHZpcnRfYWRkciwgc2l6ZSwgb2ZmO1xuIFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4gXG4mIzQzO1x0aWYgKGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxuJiM0MztcdFx0cmV0dXJuIC1FRkFVTFQ7XG4mIzQzO1xuIFx0LyogRGV2bWVtIGZpbGxpbmcgd29ya3MgYnkgdGFraW5nIGFuIElPVkVDIGZyb20gdGhlIHVzZXIgd2hlcmUgdGhlXG4gXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXG4gXHQgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7RE1BX1NIQVJFRF9CVUZGRVImIzM0OywKICAgICYjMzQ7UEFHRV9QT09MJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgwYWYxZmNkODhlZWFiYjVhYTY2NmI2N2FhY2M2YmM2NzYxNTg3ZjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAwMDo1MDoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RhdGFncmFtLmMgYi9uZXQvY29yZS9kYXRhZ3JhbS5jCmluZGV4IGMyODVjNjQ2NTkyM2U0Li4xNzNiNWQ5N2JkNDA5YSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGF0YWdyYW0uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kYXRhZ3JhbS5jCkBAIC03MTIsNiAmIzQzOzcxMiw5IEBAIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSwKIAlzaXplX3QgdmlydF9hZGRyLCBzaXplLCBvZmY7CiAJc3RydWN0IG5ldF9pb3YgKm5pb3Y7CiAKJiM0MzsJaWYgKGkgJmFtcDsmYW1wOyBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkKJiM0MzsJCXJldHVybiAtRUZBVUxUOwomIzQzOwogCS8qIERldm1lbSBmaWxsaW5nIHdvcmtzIGJ5IHRha2luZyBhbiBJT1ZFQyBmcm9tIHRoZSB1c2VyIHdoZXJlIHRoZQogCSAqIGlvdl9hZGRycyBhcmUgaW50ZXJwcmV0ZWQgYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIGRtYS1idWYgdG8KIAkgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBDb3JlIERhdGFncmFtIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIGBuZXQvY29yZS9kYXRhZ3JhbS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIHByZXR0eSBmdW5kYW1lbnRhbCBmb3IgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uLgoKVGhlIGludGVyZXN0aW5nIGJpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBjaGVjazoKCmBgYGMKCWlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpCgkJcmV0dXJuIC1FRkFVTFQ7CmBgYAoKU28sIGlmIGBpYCAod2hhdGV2ZXIgdGhhdCByZXByZXNlbnRzIGluIHRoaXMgY29udGV4dCDigJMgcHJvYmFibHkgYW4gaW5kZXggb3Igc29tZSBraW5kIG9mIGNvdW50ZXIgd2l0aGluIHRoZSBsb29wKSBpcyBub24temVybywgYW5kIGBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKWAgaXMgdHJ1ZSwgd2UgZ2V0IGEgLUVGQVVMVC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmRpdGlvbmFsIGlzIGFpbWluZyB0byBwcmV2ZW50LiAmIzM0O3NrYl9mcmFnc19yZWFkYWJsZSYjMzQ7IGlzIHRoZSBrZXkgaGVyZS4gSXQmIzM5O3MgdXNlZCB0byBjaGVjayBpZiBmcmFncyB3aXRoaW4gdGhlIHNrYiBoYXZlIHJlYWRhYmxlIHBlcm1pc3Npb25zLCBzbyB0aGlzIHNlZW1zIHRvIGJlIGFkZGluZyBhIHJlc3RyaWN0aW9uIHRvIGhvdyB0aGlzIGZ1bmN0aW9uIG9wZXJhdGVzIHdpdGggc2tiIGZyYWdzLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBjbGVhcmx5IG1vZGlmeWluZyB0aGUgZGF0YWdyYW0gaGFuZGxpbmcgbG9naWMgd2l0aGluIHRoZSBuZXR3b3JrIGNvcmUuIEkgbmVlZCB0byBjYXJlZnVsbHkgYW5hbHl6ZSB0aGUgb3JpZ2luYWwgY29kZSwgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCAqd2h5KiB0aGlzIHBhcnRpY3VsYXIgY2hlY2sgaXMgYmVpbmcgaW50cm9kdWNlZC4gV2hhdCBzY2VuYXJpbyBpcyB0aGlzIGd1YXJkaW5nIGFnYWluc3Q/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdHk/IERhdGEgY29ycnVwdGlvbj8gUGVyZm9ybWFuY2UgaXNzdWU/IEFuZCB3aGF0JiMzOTtzIHRoZSBzZW1hbnRpYyBtZWFuaW5nIG9mIGBpYCBpbiB0aGlzIGZ1bmN0aW9uPwoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgb2YgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCB0byBkZXRlcm1pbmUgd2hhdCBpdCYjMzk7cyBzdXBwb3NlZCB0byBkbyBhbmQgaG93IHRoZSBwYXRjaCBhZmZlY3RzIGl0LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudCBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGNoZWNrIHRvIGFzc2VzcyBpdHMgaW1wYWN0IG9uIG92ZXJhbGwgbmV0d29yayBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3plcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2RhdGFncmFtLmM9NzA2PXN0YXRpYyBpbnRcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzA3Onplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzA4LVx0XHRcdCAgICAgIGludCBsZW5ndGgsXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03NDk9aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzYwLVx0ZWxzZSBpZiAoYmluZGluZylcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYxOlx0XHRyZXQgPSB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShza2IsIGZyb20sIGxlbmd0aCwgYmluZGluZyk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2Mi1cdGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODE1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEaWdnaW5nIGludG8gdGhlIFplcm8tQ29weSBEYXRhIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIEkgbm90ZSBpcyB0aGF0IGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGFuIGludGVybmFsIGhlbHBlciwgbGlrZWx5IHNwZWNpZmljIHRvIHRoZSBjb21waWxhdGlvbiB1bml0IGl0JiMzOTtzIGRlZmluZWQgaW4uIFRoaXMgc3VnZ2VzdHMgaXQmIzM5O3Mgbm90IG1lYW50IHRvIGJlIGNhbGxlZCBkaXJlY3RseSBmcm9tIG91dHNpZGUgdGhpcyBzcGVjaWZpYyBtb2R1bGUuIEFuZCBpdCBpcyBjYWxsZWQgYnkgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4KCk5vdywgdGhlIG5hdHVyYWwgcXVlc3Rpb24gaXMsICYjMzQ7V2hlcmUgKmVsc2UqIGlzIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgYmVpbmcgdXNlZD8mIzM0OyBLbm93aW5nIHRoZSBjYWxsIGNoYWluIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIHB1cnBvc2Ugb2YgdGhpcyB6ZXJvLWNvcHkgZGF0YSBwYXRoLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGF0IGZ1bmN0aW9uIHRvIGdhaW4gYSBjbGVhcmVyIHBpY3R1cmUuIEl0JiMzOTtzIHRpbWUgdG8gZmluZCB0aGUgY2FsbCBzaXRlcyBmb3IgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3plcm9jb3B5X3NnX2Zyb21faXRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NjItXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjM6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzczLXtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3NDpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cdTAwM2Vzaywgc2tiLCBcdTAwMjZtc2ctXHUwMDNlbXNnX2l0ZXIsIGxlbixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3NS1cdFx0XHRcdCAgICAgICBOVUxMKTtcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTcwNz16ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc0OTppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc1MC1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc0LX1cbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzc1OkVYUE9SVF9TWU1CT0woX196ZXJvY29weV9zZ19mcm9tX2l0ZXIpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03ODc9aW50IHplcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTQtXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc5NTpcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc5Ni19XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0xOTMzLVxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcdGVyciA9IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sXG5uZXQvY29yZS9za2J1ZmYuYy0xOTM1LVx0XHRcdFx0ICAgICAgYmluZGluZyk7XG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTgwPXN0YXRpYyBpbnQgdmlydGlvX3RyYW5zcG9ydF9maWxsX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cdGlmICh6Y29weSlcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo4ODpcdFx0cmV0dXJuIF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgTlVMTCwgc2tiLFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTg5LVx0XHRcdFx0XHQgICAgICAgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yMzktXHQvKiBJZiAmIzM5O3ZzayYjMzk7ICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjI0MDpcdCAqIHdpbGwgbmV2ZXIgY2FsbCAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyBiZWxvdyB3aXRob3V0XG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQxLVx0ICogc2V0dGluZyBza2Igb3duZXIgaW4gJiMzOTtza2Jfc2V0X293bmVyX3coKSYjMzk7LiBUaGUgb25seSBjYXNlXG4tLVxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0Ni1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XHQvKiBTZXQgb3duZXIgaGVyZSwgYmVjYXVzZSAmIzM5O19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCkmIzM5OyB1c2VzXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVx0ICogb3duZXIgb2Ygc2tiIHdpdGhvdXQgY2hlY2sgdG8gdXBkYXRlICYjMzk7c2tfd21lbV9hbGxvYyYjMzk7LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTIKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRGF0YSBGbG93OiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGFuZCBpdHMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBrZXkgaXMgd2hlbiBgYmluZGluZ2AgaXNuJiMzOTt0IGEgbnVsbCBwb2ludGVyLiBUaGF0JiMzOTtzIHRoZSB0cmlnZ2VyLiBXaGVuIHRoYXQgaGFwcGVucywgdGhpcyBgYmluZGluZ2AgdmFyaWFibGUgZ2V0cyBwYXNzZWQgZGlyZWN0bHkgdG8gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgd2hlbiBgYmluZGluZ2AgaXMgaW5kZWVkICpub3QqIE5VTEwuIEdvdHRhIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgd2l0aCB0aGF0IGNvbmRpdGlvbi4gRGlnZ2luZyBpbnRvIHRoZSBjb2RlLCBhbmQgSSBzZWUgaXQhIFJpZ2h0IHRoZXJlIGluIGBuZXQvY29yZS9za2J1ZmYuY2AgYXQgbGluZSAxOTM0LCBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBtYWtlcyB0aGUgY2FsbDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgJmFtcDttc2ctJmd0O21zZ19pdGVyLCBsZW4sIGJpbmRpbmcpYC4gUGVyZmVjdC4gU28gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgaXMgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGF0JiMzOTtzIHRoZSByZWxldmFudCBwYXRoIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2tidWZmLmg9MTc3MT1zdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3Ny1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3ODppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cdFx0XHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xOTEwPUVYUE9SVF9TWU1CT0xfR1BMKG1zZ196ZXJvY29weV91YnVmX29wcyk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxubmV0L2NvcmUvc2tidWZmLmM6MTkxMjppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTMtXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTk0OS19XG5uZXQvY29yZS9za2J1ZmYuYzoxOTUwOkVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbSk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxuLS1cbm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG4tLVxubmV0L2lwdjQvdGNwLmMtMTMzOC1cbm5ldC9pcHY0L3RjcC5jOjEzMzk6XHRcdFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHNrLCBza2IsIG1zZywgY29weSwgdWFyZyxcbm5ldC9pcHY0L3RjcC5jLTEzNDAtXHRcdFx0XHRcdFx0ICAgICAgIGJpbmRpbmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipBbmFseXppbmcgdGhlIERhdGEgRmxvdzogYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBmdW5jdGlvbiBjYWxsLiBJdCYjMzk7cyBjbGVhcmx5IGltcG9ydGFudCwgYW5kIGZyb20gdGhlIGluaXRpYWwgY29udGV4dCwgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCB3aXRoaW4gdGhlIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGZ1bmN0aW9uLiBUaGlzIG1ha2VzIHNlbnNlOyBzdHJlYW0tYmFzZWQgcHJvdG9jb2xzIGxpa2UgVENQIGFyZSBuYXR1cmFsIGNhbmRpZGF0ZXMgZm9yIHplcm8tY29weSBvcGVyYXRpb25zLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHVzZXIgZGF0YS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCBwcmVjaXNlbHkgKmhvdyogdGhlIGBiaW5kaW5nYCBpcyBvYnRhaW5lZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIEkgbmVlZCB0byB0cmFjayB0aGF0IGRvd247IGl0JiMzOTtzIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIFVuZGVyc3RhbmRpbmcgaG93IHRoYXQgYmluZGluZyBpcyBtYW5hZ2VkIHdpbGwgaWxsdW1pbmF0ZSB0aGUgb3ZlcmFsbCBkYXRhIGZsb3cgYW5kIGlkZW50aWZ5IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLiBUaGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgc29ja2V0IGJ1ZmZlciAoYHNrYmApIGFuZCB0aGF0ICYjMzk7YmluZGluZyYjMzk7IGlzIHRoZSBjb3JlIG9mIHdoYXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQuIExldCYjMzk7cyBzZWUgaG93IHRoZXkgaW50ZXJhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JpbmRpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxubmV0L2lwdjQvdGNwLmMtMTExNy17XG5uZXQvaXB2NC90Y3AuYzoxMTE4Olx0c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKmJpbmRpbmcgPSBOVUxMO1xubmV0L2lwdjQvdGNwLmMtMTExOS1cdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTExNTgtXHRcdFx0aWYgKCFzb2NrY19lcnIgXHUwMDI2XHUwMDI2IHNvY2tjLmRtYWJ1Zl9pZCkge1xubmV0L2lwdjQvdGNwLmM6MTE1OTpcdFx0XHRcdGJpbmRpbmcgPSBuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHNrLCBzb2NrYy5kbWFidWZfaWQpO1xubmV0L2lwdjQvdGNwLmM6MTE2MDpcdFx0XHRcdGlmIChJU19FUlIoYmluZGluZykpIHtcbm5ldC9pcHY0L3RjcC5jOjExNjE6XHRcdFx0XHRcdGVyciA9IFBUUl9FUlIoYmluZGluZyk7XG5uZXQvaXB2NC90Y3AuYzoxMTYyOlx0XHRcdFx0XHRiaW5kaW5nID0gTlVMTDtcbm5ldC9pcHY0L3RjcC5jLTExNjMtXHRcdFx0XHRcdGdvdG8gb3V0X2Vycjtcbi0tXG5uZXQvaXB2NC90Y3AuYy0xMzM5LVx0XHRcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXG5uZXQvaXB2NC90Y3AuYzoxMzQwOlx0XHRcdFx0XHRcdCAgICAgICBiaW5kaW5nKTtcbm5ldC9pcHY0L3RjcC5jLTEzNDEtXHRcdFx0aWYgKGVyciA9PSAtRU1TR1NJWkUgfHwgZXJyID09IC1FRVhJU1QpIHtcbi0tXG5uZXQvaXB2NC90Y3AuYy0xNDE5LVx0XHRuZXRfemNvcHlfcHV0KHVhcmcpO1xubmV0L2lwdjQvdGNwLmM6MTQyMDpcdGlmIChiaW5kaW5nKVxubmV0L2lwdjQvdGNwLmM6MTQyMTpcdFx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoYmluZGluZyk7XG5uZXQvaXB2NC90Y3AuYy0xNDIyLVx0cmV0dXJuIGNvcGllZCAmIzQzOyBjb3BpZWRfc3luO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTE0MzgtXHR9XG5uZXQvaXB2NC90Y3AuYzoxNDM5Olx0aWYgKGJpbmRpbmcpXG5uZXQvaXB2NC90Y3AuYzoxNDQwOlx0XHRuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nX3B1dChiaW5kaW5nKTtcbm5ldC9pcHY0L3RjcC5jLTE0NDEtXG4tLVxubmV0L2lwdjQvdGNwLmM9MjQ5OT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2RtYWJ1ZihzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdGNwLmMtMjU5OC1cdFx0XHRcdGRtYWJ1Zl9jbXNnLmZyYWdfdG9rZW4gPSB0Y3BfeGFfcG9vbC50b2tlbnNbdGNwX3hhX3Bvb2wuaWR4XTtcbm5ldC9pcHY0L3RjcC5jOjI1OTk6XHRcdFx0XHRkbWFidWZfY21zZy5kbWFidWZfaWQgPSBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nX2lkKG5pb3YpO1xubmV0L2lwdjQvdGNwLmMtMjYwMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA4MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgYXJlYToKCioqQW5hbHl6aW5nIGEgRGV2bWVtIFRDUCBQYXRjaCoqCgpBbHJpZ2h0LCBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgbW9kaWZ5aW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyB0aGlzIG5ldyBjaGVjazogYGlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHJldHVybiAtRUZBVUxUO2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGlzIGlzIGRlZmluaXRlbHkgcmVsYXRlZCB0byBkZXZtZW0gVENQLCBvciBkZXZpY2UgbWVtb3J5IFRDUCwgd2hpY2gsIG9mIGNvdXJzZSwgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gZm9yIFRDUCBvbiBzeXN0ZW1zIHdpdGggZGlyZWN0IG1lbW9yeSBhY2Nlc3MuJiMzNDsKCkdpdmVuIHRoYXQgaXQmIzM5O3MgaW5qZWN0aW5nIGFuIGVycm9yIHJldHVybiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVudC4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyB0aGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IG9yIGFuIGVkZ2UgY2FzZSB3aXRoaW4gdGhlIHplcm9jb3B5IG9wZXJhdGlvbiB3aGVuIHVzaW5nIGRldmljZSBtZW1vcnkuIFRoZSBjaGVjayB3aXRoIGBpYCBhbmQgYHNrYl9mcmFnc19yZWFkYWJsZShza2IpYCBpcyB3aGF0JiMzOTtzIHBpcXVpbmcgbXkgaW50ZXJlc3QuIEkgbmVlZCB0byBkaWcgaW50byB3aHkgdGhlIHBhdGNoIGF1dGhvciBpcyB1c2luZyBib3RoIG9mIHRoZXNlIHRvIGRldGVybWluZSB0aGUgbG9naWMsIGJ1dCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBwcm90ZWN0IGFnYWluc3Qgc29tZSBraW5kIG9mIGNvbmN1cnJlbnQgYWNjZXNzIG9yIGJ1ZmZlciBjb3JydXB0aW9uIHdoZW4gdGhlIFNLQiBpcyB1c2luZyBmcmFncy4gSSBzaG91bGQgYWxzbyBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIHJlcXVpcmVkIGZvciBkZXZtZW0gVENQIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgY2hlY2sgZml0cyBpbiB0aGUgZWNvc3lzdGVtLiBJIHNob3VsZCBnbyBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBleGlzdGluZyBjb2RlYmFzZSB0byBmaW5kIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0X2Rldm1lbV9nZXRfYmluZGluZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXZtZW0uYz0zNzI9dm9pZCBuZXRfZGV2bWVtX3B1dF9uZXRfaW92KHN0cnVjdCBuZXRfaW92ICpuaW92KVxuLS1cbm5ldC9jb3JlL2Rldm1lbS5jLTM3Ni1cbm5ldC9jb3JlL2Rldm1lbS5jOjM3NzpzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssXG5uZXQvY29yZS9kZXZtZW0uYy0zNzgtXHRcdFx0XHRcdFx0XHQgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZClcbi0tXG5uZXQvY29yZS9kZXZtZW0uaD0xNTE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmg6MTUyOm5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKTtcbm5ldC9jb3JlL2Rldm1lbS5oLTE1My1zdHJ1Y3QgbmV0X2lvdiAqXG4tLVxubmV0L2NvcmUvZGV2bWVtLmg9MjIzPXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxubmV0L2NvcmUvZGV2bWVtLmg6MjI0Om5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZG1hYnVmX2lkKVxubmV0L2NvcmUvZGV2bWVtLmgtMjI1LXtcbi0tXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcC5jLTExNTgtXHRcdFx0aWYgKCFzb2NrY19lcnIgXHUwMDI2XHUwMDI2IHNvY2tjLmRtYWJ1Zl9pZCkge1xubmV0L2lwdjQvdGNwLmM6MTE1OTpcdFx0XHRcdGJpbmRpbmcgPSBuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHNrLCBzb2NrYy5kbWFidWZfaWQpO1xubmV0L2lwdjQvdGNwLmMtMTE2MC1cdFx0XHRcdGlmIChJU19FUlIoYmluZGluZykpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwMgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBgZGV2bWVtLmNgIEFieXNzKioKCk9rYXksIHNvIHdlIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgbWVtb3J5IGFjY2VzcyBtZWNoYW5pc20gd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgbmV0L2NvcmUvZGV2bWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRoZSBsb3ctbGV2ZWwgc3R1ZmYgdG8gbGl2ZSwgdGhlIGRyaXZlci1zcGVjaWZpYyBtZW1vcnkgbWFwcGluZyBhbmQgYWNjZXNzIHJvdXRpbmVzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyBwaHlzaWNhbCBhZGRyZXNzZXMsIG1lbW9yeSByZWdpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgcmVzdHJpY3Rpb25zIG9yIHBlY3VsaWFyaXRpZXMuCgpOZXh0LCBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBmaWxlLiBUaGVyZSBhcmUgbGlrZWx5IHNvbWUga2VybmVsIGNvbmZpZyBmbGFncyB0aGF0IGNvbnRyb2wgdGhlIGVuYWJsaW5nLCBkaXNhYmxpbmcsIGFuZCBzcGVjaWZpYyBiZWhhdmlvciBvZiBgZGV2bWVtLmNgLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGUgZnVuY3Rpb25hbGl0eS4gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgdG8gY29uc2lkZXI/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyBpZiBpdCBpcyBjb25maWd1cmVkIGEgY2VydGFpbiB3YXk/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Rldm1lbS5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9NDg9b2JqLSQoQ09ORklHX05FVF9URVNUKSAmIzQzOz0gbmV0X3Rlc3Qub1xubmV0L2NvcmUvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX05FVF9ERVZNRU0pICYjNDM7PSBkZXZtZW0ub1xubmV0L2NvcmUvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX0RFQlVHX05FVCkgJiM0Mzs9IGxvY2tfZGVidWcub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjQ3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGl0IGxvb2tzIGxpa2UgYENPTkZJR19ORVRfREVWTUVNYCBpcyBhIGhhcmQgcmVxdWlyZW1lbnQgZm9yIHNvbWV0aGluZyBJJiMzOTttIHdvcmtpbmcgb24uIFRoYXQmIzM5O3Mgbm90IGVudGlyZWx5IHN1cnByaXNpbmcsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgaXQmIzM5O3MgYmVlbiB0cmlnZ2VyZWQuIExldCYjMzk7cyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIGlzIHRoZSBgbmV0L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBuZXR3b3JrLXJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9uIHRoaXMgb3B0aW9uLCB3aGF0IGZlYXR1cmVzIGl0IGVuYWJsZXMsIGFuZCB3aGF0IG1vZHVsZXMgYXJlIG5vdyByZWx5aW5nIG9uIGl0LiBLbm93aW5nIHRoaXMgd2lsbCBjbGFyaWZ5IHRoZSBsYXJnZXIgcGljdHVyZS4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgZGVwZW5kZW5jeSwgYW5kIG1ha2UgYW4gaW5mb3JtZWQgZGVjaXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfREVWTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTY2PWNvbmZpZyBTS0JfRVhURU5TSU9OU1xuLS1cbm5ldC9LY29uZmlnLTY4LVxubmV0L0tjb25maWc6Njk6Y29uZmlnIE5FVF9ERVZNRU1cbm5ldC9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTMwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBhIEtlcm5lbCBDb25maWd1cmF0aW9uIEZsYWcqKgoKT2theSwgc28gYENPTkZJR19ORVRfREVWTUVNYCBpcyBkZWZpbmVkIGFzICYjMzQ7eSYjMzQ7LiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgZGVlcGVyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW5mbHVlbmNpbmcgdGhpcyBzZXR0aW5nLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbmV0L0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIHplcm8gaW4gYXJvdW5kIGxpbmUgNjksIHRoYXQmIzM5O3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzLCBleHBsYW5hdGlvbnMsIGFuZCBwb3RlbnRpYWxseSB0aGUgY29udGV4dCBmb3IgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHNlZSAqd2h5KiB0aGlzIGlzIHNldCwgd2hhdCBvdGhlciBvcHRpb25zIGl0IGRlcGVuZHMgb24gb3IgYWZmZWN0cywgYW5kIHVsdGltYXRlbHksIHdoYXQgaW1wbGljYXRpb25zIHRoaXMgaGFzIGZvciB0aGUgbmV0d29yayBzdWJzeXN0ZW0uIFRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vaywgZXNwZWNpYWxseSBnaXZlbiBteSBleHBlcmllbmNlIHdpdGguLi4gd2VsbCwgZXZlcnl0aGluZyEgTGV0JiMzOTtzIGdldCB0byB0aGUgcm9vdCBvZiB0aGUgbWF0dGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdGNvbmZpZyBORVRfUkVESVJFQ1RcbiAgNjE6XHRcdGJvb2xcbiAgNjI6XHRcbiAgNjM6XHRjb25maWcgU0tCX0RFQ1JZUFRFRFxuICA2NDpcdFx0Ym9vbFxuICA2NTpcdFxuICA2NjpcdGNvbmZpZyBTS0JfRVhURU5TSU9OU1xuICA2NzpcdFx0Ym9vbFxuICA2ODpcdFxuICA2OTpcdGNvbmZpZyBORVRfREVWTUVNXG4gIDcwOlx0XHRkZWZfYm9vbCB5XG4gIDcxOlx0XHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbiAgNzI6XHRcdGRlcGVuZHMgb24gRE1BX1NIQVJFRF9CVUZGRVJcbiAgNzM6XHRcdGRlcGVuZHMgb24gUEFHRV9QT09MXG4gIDc0Olx0XG4gIDc1Olx0Y29uZmlnIE5FVF9TSEFQRVJcbiAgNzY6XHRcdGJvb2xcbiAgNzc6XHRcbiAgNzg6XHRjb25maWcgTkVUX0NSQzMyQ1xuICA3OTpcdFx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTU2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBORVRfREVWTUVNYCBoZXJlLCBhbmQgSSYjMzk7bSBpbW1lZGlhdGVseSBub3RpY2luZyBhIGRlcGVuZGVuY3k6IGl0JiMzOTtzIGJ1aWx0IHVwb24gYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAuIFRoYXQmIzM5O3Mgbm90IGVudGlyZWx5IHVuZXhwZWN0ZWQsIGdpdmVuIHRoZSBuYXR1cmUgb2YgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgYW5kIHRoZSBuZWVkIGZvciBlZmZpY2llbnQgYnVmZmVyIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHN0YWNrLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGNsYXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBgRE1BX1NIQVJFRF9CVUZGRVJgIGlzIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBsaWtlbHkgYmFrZWQgaW4gYmFzZWQgb24gcGxhdGZvcm0gc3VwcG9ydCwgb3IgaWYgaXQgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxpbmcgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4gS25vd2luZyB0aGlzIHVwZnJvbnQgd2lsbCBoYXZlIGEgdGFuZ2libGUgaW1wYWN0IGluIG91ciBidWlsZCBwcm9jZXNzIGFuZCBhbnkgcmVsYXRlZCBkZWJ1ZyBjeWNsZXMuIEtub3dpbmcgdGhpcywgSSBjYW4gYmVnaW4gdG8gd29yayBvdXQgdGhlIG9wdGltYWwgY29uZmlnIGZvciBteSBuZXR3b3JrIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRE1BX1NIQVJFRF9CVUZGRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL0tjb25maWc9MjEzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jhc2UvcmVnbWFwL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTIxNC1cbmRyaXZlcnMvYmFzZS9LY29uZmlnOjIxNTpjb25maWcgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvYmFzZS9LY29uZmlnLTIxNi1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI4NAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgYSBDb25maWd1cmF0aW9uIEZsYWcqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIGJvb2xlYW4sIGEgY29uZmlndXJhdGlvbiBmbGFnIHNwZWNpZmljYWxseSwgYW5kIGl0JiMzOTtzIGludGVyZXN0aW5nIGJlY2F1c2UgaXQmIzM5O3MgKnVucHJvbXB0ZWQqLiBUaGF0IG1lYW5zIGl0JiMzOTtzIHByb2JhYmx5IGJlaW5nIHNldCBhcyBhIGNvbnNlcXVlbmNlIG9mICpzb21ldGhpbmcgZWxzZSogYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gSXQmIzM5O3Mgbm90IHNvbWV0aGluZyB0aGUgdXNlciBpcyBleHBsaWNpdGx5IGNob29zaW5nLCBhdCBsZWFzdCBub3QgZGlyZWN0bHkuIEl0JiMzOTtzIGRlcml2ZWQuCgpNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQmIzM5O3MgdGhlIGRlcGVuZGVuY3k/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgYXJlIGFjdHVhbGx5IHB1bGxpbmcgdGhlIHRyaWdnZXIgb24gYERNQV9TSEFSRURfQlVGRkVSYD8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhyb3VnaCB0aGUgcmVsZXZhbnQgY29uZmlnIGZpbGVzLCBodW50IGRvd24gdGhlIGNvbmRpdGlvbmFscywgYW5kIHVuZGVyc3RhbmQgdGhlIGxvZ2ljIHRoYXQgbGVhZHMgdG8gdGhpcyBmbGFnIGJlaW5nIHNldC4gS25vd2luZyB3aGF0ICpjYXVzZXMqIGl0IHRvIGJlIHNldCBpcyBjcml0aWNhbC4gSXMgaXQgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24/IEEgbWVtb3J5IG1hbmFnZW1lbnQgc3RyYXRlZ3k/IE9yIHBlcmhhcHMgYSBjb21wYXRpYmlsaXR5IHJlcXVpcmVtZW50PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIHRoaXMgZGVyaXZlZCBzZXR0aW5nIGJlZm9yZSBJIGNhbiBiZSBjb25maWRlbnQgaW4gaXRzIHByb3BlciB1c2UuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSBhbmQgc2VlIHdoYXQmIzM5O3MgY29ubmVjdGVkIHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0PTY1PUFueSBleHBvcnRlcnMgb3IgdXNlcnMgb2YgdGhlIGRtYS1idWYgYnVmZmVyIHNoYXJpbmcgZnJhbWV3b3JrIG11c3QgaGF2ZSBhXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3Q6NjY6JiMzOTtzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVImIzM5OyBpbiB0aGVpciByZXNwZWN0aXZlIEtjb25maWdzLlxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0LTY3LVxuLS1cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnPTY9Y29uZmlnIERSTV9BQ0NFTF9IQUJBTkFMQUJTXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL0tjb25maWctMTItXHRzZWxlY3QgSFdNT05cbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnOjEzOlx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvS2NvbmZpZy0xNC1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTQ9Y29uZmlnIFNZTkNfRklMRVxuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTYtXHRkZWZhdWx0IG5cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjc6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTgtXHRoZWxwXG4tLVxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9NTI9Y29uZmlnIERNQUJVRl9LVU5JVF9URVNUXG4tLVxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNTQtXHRkZXBlbmRzIG9uIEtVTklUXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo1NTpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctNTYtXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnPTYwPW1lbnVjb25maWcgRE1BQlVGX0hFQVBTXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02MS1cdGJvb2wgXCYjMzQ7RE1BLUJVRiBVc2VybGFuZCBNZW1vcnkgSGVhcHNcJiMzNDtcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjYyOlx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02My1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz04PW1lbnVjb25maWcgRFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTMtXHRzZWxlY3QgSTJDXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoxNDpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTUtXHRzZWxlY3QgU1lOQ19GSUxFXG4tLVxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWc9Nj1jb25maWcgVEVHUkFfSE9TVDFYXG4tLVxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWctOC1cdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnOjk6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnLTEwLVx0c2VsZWN0IFRFR1JBX0hPU1QxWF9DT05URVhUX0JVU1xuLS1cbmRyaXZlcnMvaWlvL0tjb25maWc9MTU9Y29uZmlnIElJT19CVUZGRVJcbmRyaXZlcnMvaWlvL0tjb25maWctMTYtXHRib29sIFwmIzM0O0VuYWJsZSBidWZmZXIgc3VwcG9ydCB3aXRoaW4gSUlPXCYjMzQ7XG5kcml2ZXJzL2lpby9LY29uZmlnOjE3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2lpby9LY29uZmlnLTE4LVx0aGVscFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTI9bWVudWNvbmZpZyBJTkZJTklCQU5EXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNy1cdGRlcGVuZHMgb24gIUFMUEhBXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo4Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy05LVx0c2VsZWN0IElSUV9QT0xMXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWc9NDQ9Y29uZmlnIElORklOSUJBTkRfVVNFUl9NRU1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00Ny1cdGRlcGVuZHMgb24gTU1VXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZzo0ODpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNDktXHRkZWZhdWx0IHlcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZz0zOT1jb25maWcgSU9NTVVGRF9URVNUXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDQtXHRkZXBlbmRzIG9uIElPTU1VX1BUX0FNRFYxPXkgfHwgSU9NTVVGRD1JT01NVV9QVF9BTURWMVxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc6NDU6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvaW9tbXUvaW9tbXVmZC9LY29uZmlnLTQ2LVx0c2VsZWN0IElPTU1VRkRfRFJJVkVSXG4tLVxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc9Mz1jb25maWcgVklERU9CVUYyX0NPUkVcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjQ6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTUtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTEzPWNvbmZpZyBWSURFT0JVRjJfRE1BX0NPTlRJR1xuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTE2LVx0c2VsZWN0IFZJREVPQlVGMl9NRU1PUFNcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjE3Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTE5PWNvbmZpZyBWSURFT0JVRjJfVk1BTExPQ1xuLS1cbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTIyLVx0c2VsZWN0IFZJREVPQlVGMl9NRU1PUFNcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjIzOlx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yNC1cbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZz0xPWNvbmZpZyBWSURFT19URUdSQV9WREVcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy02LVx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnOjc6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnZpZGlhL3RlZ3JhLXZkZS9LY29uZmlnLTgtXHRzZWxlY3QgSU9NTVVfSU9WQVxuLS1cbmRyaXZlcnMvbWlzYy9LY29uZmlnPTMwMT1jb25maWcgUUNPTV9GQVNUUlBDXG4tLVxuZHJpdmVycy9taXNjL0tjb25maWctMzA0LVx0ZGVwZW5kcyBvbiBSUE1TR1xuZHJpdmVycy9taXNjL0tjb25maWc6MzA1Olx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXG5kcml2ZXJzL21pc2MvS2NvbmZpZy0zMDYtXHRzZWxlY3QgUUNPTV9TQ01cbi0tXG5kcml2ZXJzL3RlZS9LY29uZmlnPTM9bWVudWNvbmZpZyBURUVcbi0tXG5kcml2ZXJzL3RlZS9LY29uZmlnLTYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG5kcml2ZXJzL3RlZS9LY29uZmlnOjc6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMvdGVlL0tjb25maWctOC1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTE5Mj1jb25maWcgVVNCX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5MzpcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnPTE0NT1jb25maWcgWEVOX0dOVERFVl9ETUFCVUZcbi0tXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0Ny1cdGRlcGVuZHMgb24gWEVOX0dOVERFViBcdTAwMjZcdTAwMjYgWEVOX0dSQU5UX0RNQV9BTExPQ1xuZHJpdmVycy94ZW4vS2NvbmZpZzoxNDg6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbmRyaXZlcnMveGVuL0tjb25maWctMTQ5LVx0aGVscFxuLS1cbnNhbXBsZXMvS2NvbmZpZz0yMzA9Y29uZmlnIFNBTVBMRV9WRklPX01ERVZfTUJPQ0hTXG4tLVxuc2FtcGxlcy9LY29uZmlnLTIzMy1cdHNlbGVjdCBWRklPX01ERVZcbnNhbXBsZXMvS2NvbmZpZzoyMzQ6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbnNhbXBsZXMvS2NvbmZpZy0yMzUtXHRoZWxwXG4tLVxuc291bmQvc29jL2ZzbC9LY29uZmlnPTY9Y29uZmlnIFNORF9TT0NfRlNMX0FTUkNcbi0tXG5zb3VuZC9zb2MvZnNsL0tjb25maWctOC1cdGRlcGVuZHMgb24gSEFTX0RNQVxuc291bmQvc29jL2ZzbC9LY29uZmlnOjk6XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZy0xMC1cdHNlbGVjdCBSRUdNQVBfTU1JT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM2NAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIE9wdGltYWwgUmVzb3VyY2UgQWxsb2NhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBzeXN0ZW0sIGFuZCB0aGUgbmVlZCBmb3IgYFBBR0VfUE9PTGAgaGFzIGNvbWUgdG8gbXkgYXR0ZW50aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0cmFjZSBiYWNrIHRoZSBkZXBlbmRlbmN5IGNoYWluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbXBvbmVudHMsIG1vZHVsZXMsIG9yIHN1YnN5c3RlbXMgYXJlIGxldmVyYWdpbmcgdGhpcyBgUEFHRV9QT09MYC4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBrbm93aW5nIGl0JiMzOTtzICp1c2VkKiwgYnV0ICpob3cqIGl0JiMzOTtzIHNlbGVjdGVkIOKAkyB3aGF0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycywgZW52aXJvbm1lbnRhbCBmYWN0b3JzLCBvciBldmVuIGR5bmFtaWMgcnVudGltZSBkZWNpc2lvbnMgZGljdGF0ZSBpdHMgYWxsb2NhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHBpZWNlcyBvZiBjb2RlIGFjdHVhbGx5IHBlcmZvcm0gdGhlIHNlbGVjdGlvbiwgd2hhdCBjcml0ZXJpYSBhcmUgdXNlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgY2hvaWNlLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBuZXh0IHN0ZXAgdG8gZXZhbHVhdGUgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBhbmQgYXZvaWQgdW5leHBlY3RlZCBtZW1vcnkgYWxsb2NhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9NDg3PWNvbmZpZyBORVRfREVWTElOS1xuLS1cbm5ldC9LY29uZmlnLTQ5MC1cbm5ldC9LY29uZmlnOjQ5MTpjb25maWcgUEFHRV9QT09MXG5uZXQvS2NvbmZpZy00OTItXHRib29sXG5uZXQvS2NvbmZpZy00OTMtXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xubmV0L0tjb25maWctNDk1LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjc3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBjb2RlLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGl0OgoKKipBbmFseXppbmcgdGhlIFBBR0VfUE9PTCBTZWxlY3Rpb24qKgoKQWxyaWdodCwgbXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgaXMgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHNlbGVjdGluZyBgUEFHRV9QT09MYC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYTsgdW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBtZWNoYW5pc20gaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBhZ2luZy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjYWxscywgY29uZGl0aW9ucywgb3IgYWxnb3JpdGhtcyB0aGF0IHJlc3VsdCBpbiB0aGUgc2VsZWN0aW9uIG9mIHRoaXMgcGFydGljdWxhciBwb29sLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBzZXF1ZW5jZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBmbGFncyBvciBwYXJhbWV0ZXJzIGluZmx1ZW5jaW5nIHRoZSBjaG9pY2U/IElzIHRoaXMgYSBkZWZhdWx0IG9wdGlvbiwgb3IgaXMgaXQgc2VsZWN0ZWQgYmFzZWQgb24gc29tZSBoZXVyaXN0aWNzPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFzIGZhciBhcyBwb3NzaWJsZSB0byBncmFzcCB0aGUgdW5kZXJseWluZyBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnkgY29uZGl0aW9uYWxzLCBjb25maWd1cmF0aW9uIHNldHRpbmdzLCBvciBkZXBlbmRlbmNpZXMgdGhhdCBsZWFkIHRvIHRoaXMgc2VsZWN0aW9uLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGlzIHBvb2wgaXMgYmVpbmcgY2hvc2VuIGluIHRoaXMgcGFydGljdWxhciBjb250ZXh0LiBLbm93aW5nIHRoZSAmIzM0O3doeSYjMzQ7IGlzIGtleSB0byBvcHRpbWl6YXRpb24gYW5kIGRlYnVnZ2luZyBkb3duIHRoZSBsaW5lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgUEFHRV9QT09MJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZXRoZXJuZXQgcGFpciBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Ny1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0Ny1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVx0ZGVmYXVsdCB5XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4Ny1cdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cdHNlbGVjdCBORVRfU0hBUEVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMS1cdHNlbGVjdCBORVRfQUlST0hBX05QVVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiA2NEJJVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04MC1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjEzLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1Bcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3NS1cdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzEtXHRzZWxlY3QgRklYRURfUEhZXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1My1cdHNlbGVjdCBSRUFMVEVLX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTQtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7Q29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcJiMzNDsgaWYgQ09NUElMRV9URVNUXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZzo2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MC1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjAtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnPTY9Y29uZmlnIE1MWDRfRU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZy0xMS1cdHNlbGVjdCBNTFg0X0NPUkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgTUxYNV9DT1JFX0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXHRkZXBlbmRzIG9uIE5FVERFVklDRVMgXHUwMDI2XHUwMDI2IEVUSEVSTkVUIFx1MDAyNlx1MDAyNiBJTkVUIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IE1MWDVfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzUtXHRkZXBlbmRzIG9uIFBDSSBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBNTFhTV19DT1JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cdGRlZmF1bHQgbVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cdHNlbGVjdCBQQ1NfWFBDU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZzo5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cdHNlbGVjdCBWQ0FQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjMxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjI0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cdHNlbGVjdCBESU1MSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc6MjY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZzoxMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cdHNlbGVjdCBNRElPX0JJVEJBTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cdHNlbGVjdCBQSFlMSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc6Mjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cdHNlbGVjdCBNSUlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXHRzZWxlY3QgUEhZTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVx0ZGVwZW5kcyBvbiBQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXHRzZWxlY3QgRldfTE9BREVSXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXHRzZWxlY3QgTUZEX1NZU0NPTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo1NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXHRzZWxlY3QgUkVHTUFQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjcwOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MTAyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXHRzZWxlY3QgVElfSzNfQ1BQSV9ERVNDX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjIwOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVx0ZGVwZW5kcyBvbiBQUlVfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6MjI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXHRzZWxlY3QgRElNTElCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTM1LVx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnLTM3LVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MTQyCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBDb25maWd1cmF0aW9uIGZvciBaZXJvLUNvcHkgYW5kIFRlc3RhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBrZXJuZWwgY29uZmlnIG9wdGlvbnMgaW50ZXJhY3QsIHBhcnRpY3VsYXJseSBpbiByZWxhdGlvbiB0byB6ZXJvLWNvcHkgbmV0d29yayBvcGVyYXRpb25zIGFuZCBvdXIgdGVzdGluZyBzdHJhdGVneS4gSSYjMzk7dmUgYmVlbiB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdhbnQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBjb3ZlcmluZyBhbGwgYmFzZXMuIEl0IHNlZW1zIHRoYXQgYE5FVF9ERVZNRU1gIGdldHMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYm90aCBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYCBhcmUgc2V0LiBBbmQgYFBBR0VfUE9PTGAgaXRzZWxmIGlzIHNlbGVjdGVkIGJ5IGBCUEZfU1lTQ0FMTGAgaWYgdGhlIGBORVRgIG9wdGlvbiBpcyB0dXJuZWQgb24uIFBsdXMsIGBETUFfU0hBUkVEX0JVRkZFUmAgaXMgcHVsbGVkIGluIGJ5IG90aGVyIHRoaW5ncyBsaWtlIGBTWU5DX0ZJTEVgLCBgRE1BQlVGX0hFQVBTYCwgYW5kIGBEUk1gLgoKSW5pdGlhbGx5LCBJIHRob3VnaHQsICYjMzQ7TGV0JiMzOTtzIGJlIGV4cGxpY2l0IGFuZCBqdXN0IGFkZCBgTkVUX0RFVk1FTWAsIGBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdlJiMzOTtyZSBleGVyY2lzaW5nIHRoZXNlIGZlYXR1cmVzIGluIG91ciB0ZXN0cy4mIzM0OyBCdXQgdGhlbiBJIHJlbWVtYmVyZWQgdGhhdCBgTkVUX0RFVk1FTWAgaXMgYGRlZl9ib29sIHlgLCBtZWFuaW5nIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBpZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSBtZXQuIFNvLCBpZiB3ZSBjYW4gZ3VhcmFudGVlIHRoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LCB3ZSBhcmUgY292ZXJlZC4gVGhhdCBzYWlkLCBJJiMzOTttIHRoaW5raW5nIHdlIGNhbiBleHBsaWNpdGx5IHNwZWNpZnkgYE5FVF9ERVZNRU1gIGluIGBFbmFibGVDb25maWdzYCBhbnl3YXkgdG8gZW5zdXJlIGl0JiMzOTtzIHRlc3RlZC4gQWN0dWFsbHksIHNpbmNlIGl0JiMzOTtzIGEgYm9vbGVhbiwgd2UgY2FuIGp1c3Qgc2F5IGBORVRfREVWTUVNYCwgc28gdGhhdCBpcyBwcm9iYWJseSB0aGUgc2ltcGxlc3Qgd2F5LgoKTm93LCBsZXQmIzM5O3MgY2lyY2xlIGJhY2sgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCwgYW5kIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuIEkgc2VlIHRoaXMgZnVuY3Rpb24sIHdpdGggdGhlIGBpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgIGNoZWNrLCBpcyBwYXJ0IG9mIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGJvdGggYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbWAuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIHRoZW4gY2FsbGVkIGJ5IGB0Y3Bfc2VuZG1zZ19sb2NrZWRgLiBTbywgYHRjcF9zZW5kbXNnX2xvY2tlZGAgaXMgbGlrZWx5IGEga2V5IGVudHJ5IHBvaW50IHRvIGxvb2sgYXQuCgpIb3dldmVyLCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRvIGF2b2lkICYjMzQ7Z2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMmIzM0OyBiZWNhdXNlIHRoZXkgY2FuIHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9uLiBJJiMzOTttIHdvbmRlcmluZyBpZiBgdGNwX3NlbmRtc2dfbG9ja2VkYCBpcyAqdG9vKiBnZW5lcmljLiBJIG1lYW4sIGl0JiMzOTtzIHRoZSBjb3JlIG9mIFRDUCBzZW5kaW5nLCBzbyBpdCYjMzk7cyBib3VuZCB0byBiZSBzdXBlciBhY3RpdmUuIFllcywgaXQgaXMuIExldCYjMzk7cyBub3QgdXNlIHRoYXQsIHdlIG5lZWQgdG8gbG9vayBmb3Igc29tZXRoaW5nIGxlc3MgZ2VuZXJpYy4KCk9rYXksIHdoYXQgYWJvdXQgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYD8gVGhhdCYjMzk7cyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgc28gaXQmIzM5O3MgYWNjZXNzaWJsZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggdGhhdCBmdW5jdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYxPXN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzYzOmludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2NC1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTc3MT1zdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3My17XG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NzQ6XHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBza2ItXHUwMDNlc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzUtXHRcdFx0XHQgICAgICAgTlVMTCk7XG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzQ4LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NDk6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NTAtXHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc3NC19XG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc3NTpFWFBPUlRfU1lNQk9MKF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKTtcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc2LVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmM9Nzg3PWludCB6ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk0LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3OTU6XHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoTlVMTCwgTlVMTCwgc2tiLCBmcm9tLCB+MFUsIE5VTEwpO1xubmV0L2NvcmUvZGF0YWdyYW0uYy03OTYtfVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTI9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTkzMy1cbm5ldC9jb3JlL3NrYnVmZi5jOjE5MzQ6XHRlcnIgPSBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrLCBza2IsIFx1MDAyNm1zZy1cdTAwM2Vtc2dfaXRlciwgbGVuLFxubmV0L2NvcmUvc2tidWZmLmMtMTkzNS1cdFx0XHRcdCAgICAgIGJpbmRpbmcpO1xuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz04MD1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfZmlsbF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODctXHRpZiAoemNvcHkpXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6ODg6XHRcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIE5VTEwsIHNrYixcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04OS1cdFx0XHRcdFx0ICAgICAgIFx1MDAyNm1zZy1cdTAwM2Vtc2dfaXRlciwgbGVuLCBOVUxMKTtcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9MjEyPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmlydGlvX3RyYW5zcG9ydF9hbGxvY19za2Ioc3RydWN0IHZpcnRpb192c29ja19wa3RfaW5mbyAqaW5mbyxcbi0tXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjM5LVx0LyogSWYgJiMzOTt2c2smIzM5OyAhPSBOVUxMIHRoZW4gcGF5bG9hZCBpcyBhbHdheXMgcHJlc2VudCwgc28gd2Vcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDA6XHQgKiB3aWxsIG5ldmVyIGNhbGwgJiMzOTtfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJiMzOTsgYmVsb3cgd2l0aG91dFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0MS1cdCAqIHNldHRpbmcgc2tiIG93bmVyIGluICYjMzk7c2tiX3NldF9vd25lcl93KCkmIzM5Oy4gVGhlIG9ubHkgY2FzZVxuLS1cbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yNDYtXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MjQ3Olx0LyogU2V0IG93bmVyIGhlcmUsIGJlY2F1c2UgJiMzOTtfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJiMzOTsgdXNlc1xubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0OC1cdCAqIG93bmVyIG9mIHNrYiB3aXRob3V0IGNoZWNrIHRvIHVwZGF0ZSAmIzM5O3NrX3dtZW1fYWxsb2MmIzM5Oy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTcyOTQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgUG90ZW50aWFsIFplcm8tQ29weSBTeW1ib2xzKioKClJpZ2h0LCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIGlzIGEgZGVjZW50IHN0YXJ0aW5nIHBvaW50IGZvciBteSBhbmFseXNpcy4gSXQgc2VlbXMgdG8gZW5jYXBzdWxhdGUgYSBjb3JlIHplcm8tY29weSBvcGVyYXRpb24uIEJ1dCB3YWl0LCB3aGF0IGFib3V0IGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gPyBUaGF0JiMzOTtzIGFsc28gZXhwb3J0ZWQgYW5kIG5vdCBzdGF0aWMsIHdoaWNoIG1ha2VzIGl0IGFub3RoZXIgaW50ZXJlc3RpbmcgY2FuZGlkYXRlIHRvIGludmVzdGlnYXRlLiBJdCBmZWVscyBsaWtlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgb3ZlcmxhcCBvciBhIGRpZmZlcmVudCBhcHByb2FjaCByZXByZXNlbnRlZCB0aGVyZS4gTGV0JiMzOTtzIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgcm9sZSBvZiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTWF5YmUgaXQmIzM5O3MgYW4gYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9yIHJlbGF0ZWQgaW4gc29tZSBtYW5uZXIuIFRpbWUgdG8gc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc2tidWZmLmg9MTc3MT1zdGF0aWMgaW5saW5lIGludCBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3Ny1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3ODppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cdFx0XHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xOTEwPUVYUE9SVF9TWU1CT0xfR1BMKG1zZ196ZXJvY29weV91YnVmX29wcyk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxubmV0L2NvcmUvc2tidWZmLmM6MTkxMjppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTMtXHRcdFx0ICAgICBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBsZW4sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTk0OS19XG5uZXQvY29yZS9za2J1ZmYuYzoxOTUwOkVYUE9SVF9TWU1CT0xfR1BMKHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbSk7XG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxuLS1cbm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG4tLVxubmV0L2lwdjQvdGNwLmMtMTMzOC1cbm5ldC9pcHY0L3RjcC5jOjEzMzk6XHRcdFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHNrLCBza2IsIG1zZywgY29weSwgdWFyZyxcbm5ldC9pcHY0L3RjcC5jLTEzNDAtXHRcdFx0XHRcdFx0ICAgICAgIGJpbmRpbmcpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzk4MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgbG9va3MgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcGVyIGRpdmUuIEkmIzM5O3ZlIGdvdCBhIGZlZWxpbmcgaXQmIzM5O3MgY2VudHJhbCB0byB1bmRlcnN0YW5kaW5nIHRoaXMgY2hhbmdlLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMuIEhtbSwgbm8sIGl0JiMzOTtzIG5vdCBhIHZpYWJsZSBmb2N1cyBzeW1ib2wsIHVuZm9ydHVuYXRlbHkuCgpBbHJpZ2h0LCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgdGhhdCBjaGVjazogYGlmIChpICZhbXA7JmFtcDsgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHJldHVybiAtRUZBVUxUO2AuIEFoLCByaWdodCwgdGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdl4oCUaXQgZXhwbGljaXRseSBwcmV2ZW50cyB0aGUgdW5kZXNpcmFibGUgc2l0dWF0aW9uIG9mIG1peGluZyByZWFkYWJsZSBhbmQgZGV2bWVtIGZyYWdtZW50cyB3aXRoaW4gdGhlIHNhbWUgU0tCLiBZZXAsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSBhIGNoYW5nZSB3b3J0aCB2ZXJpZnlpbmcgd2l0aCByaWdvcm91cyB0ZXN0aW5nLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hpY2ggY29uZmlndXJhdGlvbnMgdGhpcyBtaWdodCBpbnRlcmFjdCB3aXRoLiBJdCBsb29rcyBsaWtlIGBORVRfREVWTUVNYCBpcyB0aGUga2V5IGNvbmZpZyBoZXJlOyBpdCBkZXBlbmRzIG9uIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgLiBPa2F5LCBzbyBJJiMzOTtsbCBhZGQgdGhvc2UgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUaGUgZXhpc3RpbmcgZm9jdXMgc3ltYm9scyBhcmUgc3RpbGwgZ29vZDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCBhbmQgb2YgY291cnNlIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgTkVUX0RFVk1FTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGVuYWJsZXIuIFl1cCwgaXQmIzM5O3MgdGhlIG9uZS4gQW5kIG5vdywgSSBzaG91bGQgYWxzbyB2ZXJpZnkgd2hlcmUgYHNrYl9mcmFnc19yZWFkYWJsZWAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlcnMuIEp1c3QgbWFraW5nIHN1cmUgSSBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAwMDo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza2JfZnJhZ3NfcmVhZGFibGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDcxPXN0YXRpYyBuZXRkZXZfdHhfdCBibnh0X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01NzUtXHRpZiAoZnJlZV9zaXplID09IGJwLVx1MDAzZXR4X3Jpbmdfc2l6ZSBcdTAwMjZcdTAwMjYgbGVuZ3RoIFx1MDAzYz0gYnAtXHUwMDNldHhfcHVzaF90aHJlc2ggXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1NzY6XHQgICAgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikgXHUwMDI2XHUwMDI2ICFsZmxhZ3MpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTU3Ny1cdFx0c3RydWN0IHR4X3B1c2hfYnVmZmVyICp0eF9wdXNoX2J1ZiA9IHR4ci1cdTAwM2V0eF9wdXNoO1xuLS1cbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTg4ND1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3pjb3B5X2Rvd25ncmFkZV9tYW5hZ2VkKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xODkwLS8qIFJldHVybiB0cnVlIGlmIGZyYWdzIGluIHRoaXMgc2tiIGFyZSByZWFkYWJsZSBieSB0aGUgaG9zdC4gKi9cbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTg5MTpzdGF0aWMgaW5saW5lIGJvb2wgc2tiX2ZyYWdzX3JlYWRhYmxlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE4OTIte1xuLS1cbmluY2x1ZGUvbmV0L3RjcC5oPTEyMzM9c3RhdGljIGlubGluZSBib29sIHRjcF9za2JfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBza19idWZmICp0byxcbi0tXG5pbmNsdWRlL25ldC90Y3AuaC0xMjM5LVx0XHQgICAgICBza2JfcHVyZV96Y29weV9zYW1lKHRvLCBmcm9tKSBcdTAwMjZcdTAwMjZcbmluY2x1ZGUvbmV0L3RjcC5oOjEyNDA6XHRcdCAgICAgIHNrYl9mcmFnc19yZWFkYWJsZSh0bykgPT0gc2tiX2ZyYWdzX3JlYWRhYmxlKGZyb20pKTtcbmluY2x1ZGUvbmV0L3RjcC5oLTEyNDEtfVxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmM9Mzg5PXN0YXRpYyBpbnQgX19za2JfZGF0YWdyYW1faXRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNDEwLVxubmV0L2NvcmUvZGF0YWdyYW0uYzo0MTE6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2NvcmUvZGF0YWdyYW0uYy00MTItXHRcdGdvdG8gc2hvcnRfY29weTtcbi0tXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzNT1pbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYy02MzktXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjY0MDpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTY0MS1cdFx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuLS1cbm5ldC9jb3JlL2RhdGFncmFtLmMtNzE0LVxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MTU6XHRpZiAoaSBcdTAwMjZcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTcxNi1cdFx0cmV0dXJuIC1FRkFVTFQ7XG4tLVxubmV0L2NvcmUvZGV2LmM9MzU2OT1pbnQgc2tiX2NoZWNrc3VtX2hlbHAoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvY29yZS9kZXYuYy0zNTgxLVxubmV0L2NvcmUvZGV2LmM6MzU4MjpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHtcbm5ldC9jb3JlL2Rldi5jLTM1ODMtXHRcdHJldHVybiAtRUZBVUxUO1xuLS1cbm5ldC9jb3JlL2Rldi5jPTM5OTE9c3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3VucmVhZGFibGVfc2tiKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2NvcmUvZGV2LmMtMzk5Ni1cbm5ldC9jb3JlL2Rldi5jOjM5OTc6XHRpZiAobGlrZWx5KHNrYl9mcmFnc19yZWFkYWJsZShza2IpIHx8XG5uZXQvY29yZS9kZXYuYy0zOTk4LVx0XHQgICBkZXYtXHUwMDNlbmV0bWVtX3R4ID09IE5FVE1FTV9UWF9OT19ETUEpKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTE5OTc9aW50IHNrYl9jb3B5X3VidWZzKHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTIwMDYtXG5uZXQvY29yZS9za2J1ZmYuYzoyMDA3Olx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTIwMDgtXHRcdHJldHVybiAtRUZBVUxUO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTIxNzc9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTIxODItXG5uZXQvY29yZS9za2J1ZmYuYzoyMTgzOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTIxODQtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTI1MDI9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5X2V4cGFuZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTI1MTItXG5uZXQvY29yZS9za2J1ZmYuYzoyNTEzOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTI1MTQtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTI4MDg9c3RhdGljIGludCBwc2tiX3RyaW1fcmNzdW1fY29tcGxldGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbilcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0yODExLVxubmV0L2NvcmUvc2tidWZmLmM6MjgxMjpcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkge1xubmV0L2NvcmUvc2tidWZmLmMtMjgxMy1cdFx0c2tiLVx1MDAzZWNzdW0gPSBjc3VtX2Jsb2NrX3N1Yihza2ItXHUwMDNlY3N1bSxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0yODc1PXZvaWQgKl9fcHNrYl9wdWxsX3RhaWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGRlbHRhKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTI4ODItXG5uZXQvY29yZS9za2J1ZmYuYzoyODgzOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTI4ODQtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTMwMTk9aW50IHNrYl9jb3B5X2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgdm9pZCAqdG8sIGludCBsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzAzOC1cbm5ldC9jb3JlL3NrYnVmZi5jOjMwMzk6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2NvcmUvc2tidWZmLmMtMzA0MC1cdFx0Z290byBmYXVsdDtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0zMjA1PXN0YXRpYyBib29sIF9fc2tiX3NwbGljZV9iaXRzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzIyNy1cdCAqL1xubmV0L2NvcmUvc2tidWZmLmM6MzIyODpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy0zMjI5LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L2NvcmUvc2tidWZmLmM9MzQ0OD1pbnQgc2tiX3N0b3JlX2JpdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgY29uc3Qgdm9pZCAqZnJvbSwgaW50IGxlbilcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zNDY2LVxubmV0L2NvcmUvc2tidWZmLmM6MzQ2NzpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy0zNDY4LVx0XHRnb3RvIGZhdWx0O1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTM1Mjk9X193c3VtIHNrYl9jaGVja3N1bShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBfX3dzdW0gY3N1bSlcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zNTQ2LVxubmV0L2NvcmUvc2tidWZmLmM6MzU0NzpcdGlmIChXQVJOX09OX09OQ0UoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTM1NDgtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTM2MTE9X193c3VtIHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYy0zNjMyLVxubmV0L2NvcmUvc2tidWZmLmM6MzYzMzpcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy0zNjM0LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0zNzAwPXUzMiBza2JfY3JjMzJjKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsIGludCBsZW4sIHUzMiBjcmMpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMzcxNC1cbm5ldC9jb3JlL3NrYnVmZi5jOjM3MTU6XHRpZiAoV0FSTl9PTl9PTkNFKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkpXG5uZXQvY29yZS9za2J1ZmYuYy0zNzE2LVx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz00NDQwPXVuc2lnbmVkIGludCBza2Jfc2VxX3JlYWQodW5zaWduZWQgaW50IGNvbnN1bWVkLCBjb25zdCB1OCAqKmRhdGEsXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNDQ2MS1cbm5ldC9jb3JlL3NrYnVmZi5jOjQ0NjI6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShzdC1cdTAwM2VjdXJfc2tiKSlcbm5ldC9jb3JlL3NrYnVmZi5jLTQ0NjMtXHRcdHJldHVybiAwO1xuLS1cbm5ldC9jb3JlL3NrYnVmZi5jPTYxNzI9Ym9vbCBza2JfdHJ5X2NvYWxlc2NlKHN0cnVjdCBza19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtNjE5MS1cbm5ldC9jb3JlL3NrYnVmZi5jOjYxOTI6XHRpZiAoc2tiX2ZyYWdzX3JlYWRhYmxlKGZyb20pICE9IHNrYl9mcmFnc19yZWFkYWJsZSh0bykpXG5uZXQvY29yZS9za2J1ZmYuYy02MTkzLVx0XHRyZXR1cm4gZmFsc2U7XG5uZXQvY29yZS9za2J1ZmYuYy02MTk0LVxubmV0L2NvcmUvc2tidWZmLmM6NjE5NTpcdGlmIChsZW4gXHUwMDNjPSBza2JfdGFpbHJvb20odG8pIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoZnJvbSkpIHtcbm5ldC9jb3JlL3NrYnVmZi5jLTYxOTYtXHRcdGlmIChsZW4pXG4tLVxubmV0L2NvcmUvc2tidWZmLmM9NzA2Mj12b2lkIHNrYl9jb25kZW5zZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9jb3JlL3NrYnVmZi5jLTcwNjUtXHRcdGlmIChza2ItXHUwMDNlZGF0YV9sZW4gXHUwMDNlIHNrYi1cdTAwM2VlbmQgLSBza2ItXHUwMDNldGFpbCB8fFxubmV0L2NvcmUvc2tidWZmLmM6NzA2NjpcdFx0ICAgIHNrYl9jbG9uZWQoc2tiKSB8fCAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvY29yZS9za2J1ZmYuYy03MDY3LVx0XHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC90Y3AuYz0yMTk1PXN0YXRpYyBpbnQgdGNwX3plcm9jb3B5X3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcC5jLTIyNjgtXG5uZXQvaXB2NC90Y3AuYzoyMjY5Olx0XHRcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvaXB2NC90Y3AuYy0yMjcwLVx0XHRcdFx0YnJlYWs7XG4tLVxubmV0L2lwdjQvdGNwLmM9MjQ5OT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2RtYWJ1ZihzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdGNwLmMtMjUxNC1cbm5ldC9pcHY0L3RjcC5jOjI1MTU6XHRcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkge1xubmV0L2lwdjQvdGNwLmMtMjUxNi1cdFx0XHRlcnIgPSAtRU5PREVWO1xuLS1cbm5ldC9pcHY0L3RjcC5jLTI1NjEtXG5uZXQvaXB2NC90Y3AuYzoyNTYyOlx0XHRcdC8qICFza2JfZnJhZ3NfcmVhZGFibGUoKSBzaG91bGQgaW5kaWNhdGUgdGhhdCBBTEwgdGhlXG5uZXQvaXB2NC90Y3AuYy0yNTYzLVx0XHRcdCAqIGZyYWdzIGluIHRoaXMgc2tiIGFyZSBkbWFidWYgbmV0X2lvdnMuIFdlJiMzOTtyZSBjaGVja2luZ1xuLS1cbm5ldC9pcHY0L3RjcC5jLTI1NjUtXHRcdFx0ICogaGVyZS4gSWYgdGhlIHRjcCBzdGFjayBpcyBub3Qgc2V0dGluZ1xubmV0L2lwdjQvdGNwLmM6MjU2NjpcdFx0XHQgKiBza2JfZnJhZ3NfcmVhZGFibGUoKSBjb3JyZWN0bHksIHdlIHN0aWxsIGRvbiYjMzk7dCB3YW50XG5uZXQvaXB2NC90Y3AuYy0yNTY3LVx0XHRcdCAqIHRvIGNyYXNoIGhlcmUuXG4tLVxubmV0L2lwdjQvdGNwLmM9MjY1NT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcbi0tXG5uZXQvaXB2NC90Y3AuYy0yODM1LVx0XHRcdGlmIChsYXN0X2NvcGllZF9kbWFidWYgIT0gLTEgXHUwMDI2XHUwMDI2XG5uZXQvaXB2NC90Y3AuYzoyODM2Olx0XHRcdCAgICBsYXN0X2NvcGllZF9kbWFidWYgIT0gIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2lwdjQvdGNwLmMtMjgzNy1cdFx0XHRcdGJyZWFrO1xubmV0L2lwdjQvdGNwLmMtMjgzOC1cbm5ldC9pcHY0L3RjcC5jOjI4Mzk6XHRcdFx0aWYgKHNrYl9mcmFnc19yZWFkYWJsZShza2IpKSB7XG5uZXQvaXB2NC90Y3AuYy0yODQwLVx0XHRcdFx0ZXJyID0gc2tiX2NvcHlfZGF0YWdyYW1fbXNnKHNrYiwgb2Zmc2V0LCBtc2csXG4tLVxubmV0L2lwdjQvdGNwLmMtMjg3MC1cbm5ldC9pcHY0L3RjcC5jOjI4NzE6XHRcdGxhc3RfY29waWVkX2RtYWJ1ZiA9ICFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKTtcbm5ldC9pcHY0L3RjcC5jLTI4NzItXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmM9NTc3Mz10Y3BfY29sbGFwc2Uoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpsaXN0LCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCxcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01Nzg2LVxubmV0L2lwdjQvdGNwX2lucHV0LmM6NTc4NzpcdFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU3ODgtXHRcdFx0Z290byBza2lwX3RoaXM7XG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNTgwOS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjU4MTA6XHRcdGlmIChuIFx1MDAyNlx1MDAyNiBuICE9IHRhaWwgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShuKSBcdTAwMjZcdTAwMjZcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4MTEtXHRcdCAgICB0Y3Bfc2tiX2Nhbl9jb2xsYXBzZV9yeChza2IsIG4pIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4MjItXHQgICAgKFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2V0Y3BfZmxhZ3MgXHUwMDI2IChUQ1BIRFJfU1lOIHwgVENQSERSX0ZJTikpIHx8XG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo1ODIzOlx0ICAgICFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4MjQtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODY1LVx0XHRcdFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNldGNwX2ZsYWdzIFx1MDAyNiAoVENQSERSX1NZTiB8IFRDUEhEUl9GSU4pKSB8fFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NTg2NjpcdFx0XHRcdCAgICAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODY3LVx0XHRcdFx0XHRnb3RvIGVuZDtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MzQ5MT1zdGF0aWMgYm9vbCB0Y3BfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMzQ5Ni1cdFx0cmV0dXJuIGZhbHNlO1xubmV0L2lwdjQvdGNwX291dHB1dC5jOjM0OTc6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTM0OTgtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYz03MDE9c3RhdGljIHVuc2lnbmVkIGludCBuZnVsbmxfZ2V0X2NvcHlfbGVuKGNvbnN0IHN0cnVjdCBuZl9sb2dpbmZvICpsaSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy03MDktXHRcdGNvcHlfbGVuID0gbGktXHUwMDNldS51bG9nLmNvcHlfbGVuO1xubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmM6NzEwOlx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jLTcxMS1cdFx0bGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbi0tXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jPTY5Mz1zdGF0aWMgdW5zaWduZWQgaW50IG5mcW5sX2dldF9kYXRhX2xlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqZW50c2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtNjk3LVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYzo2OTg6XHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShlbnRza2IpKVxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfcXVldWUuYy02OTktXHRcdGRhdGFfbGVuID0gc2tiX2hlYWRsZW4oZW50c2tiKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTIxMTU9c3RhdGljIGludCBwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yMTUyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMTUzOlx0c25hcGxlbiA9IHNrYl9mcmFnc19yZWFkYWJsZShza2IpID8gc2tiLVx1MDAzZWxlbiA6IHNrYl9oZWFkbGVuKHNrYik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIxNTQtXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMjI4PXN0YXRpYyBpbnQgdHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyNzItXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIyNzM6XHRzbmFwbGVuID0gc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikgPyBza2ItXHUwMDNlbGVuIDogc2tiX2hlYWRsZW4oc2tiKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjI3NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI5MzUKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogNTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgQ29yZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBhZGRlZCBgaWYgKGkgJmFtcDsmYW1wOyBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkgcmV0dXJuIC1FRkFVTFQ7YCBpbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGNhdGNoZXMgbXkgZXllLiBJdCYjMzk7cyBhIHByb3RlY3Rpb24gbWVjaGFuaXNtOyBpdCYjMzk7cyBwcmV2ZW50aW5nIHRoZSBmaWxsaW5nIG9mIGEgZGV2bWVtIFNLQiBpZiBpdCBhbHJlYWR5IGNvbnRhaW5zIHJlYWRhYmxlIGZyYWdtZW50cy4gVGhhdCYjMzk7cyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBJJiMzOTtsbCBnaXZlIHRoZW0gdGhhdC4KCkZ1bmN0aW9uYWxseSwgdGhpcyBjaGFuZ2UgaXMgcmVhY2hhYmxlIHRocm91Z2ggYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbWAuIE5vdywgbGV0JiMzOTtzIHRyYWNlIHRoaXMuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAsIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gIGlzIGNhbGxlZCBpbiBgbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jYCBieSBib3RoIGB2aXJ0aW9fdHJhbnNwb3J0X2ZpbGxfc2tiYCBhbmQgYHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiYC4KCldhaXQgYSBtaW51dGUuLi4gSSBzZWUgdGhhdCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gIGlzIHBhc3NpbmcgYSBgTlVMTGAgZm9yIGBiaW5kaW5nYC4gVGhpcyBtZWFucyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGlzICpvbmx5KiBjYWxsZWQgd2hlbiBgYmluZGluZ2AgaXNuJiMzOTt0IGBOVUxMYC4gQW5kIEkgY2FuIHNlZSB0aGF0IGBiaW5kaW5nYCBpcyAqb25seSogbm9uLWBOVUxMYCBpbiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBpbiBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gR290IGl0LiBUaGF0IG1lYW5zIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIHRoZSBtb3JlIGltcG9ydGFudCBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyBlZmZvcnRzLiBJdCBpcyBtb3JlIGxpa2VseSB0byB0cmlnZ2VyIHRoZSBuZXcgY29kZS4KCk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2sgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLiAgYE5FVF9ERVZNRU1gIHJlcXVpcmVzIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgLiBPa2F5LiBJJiMzOTtsbCBhZGQgYE5FVF9ERVZNRU1gIHRvIGBFbmFibGVDb25maWdzYC4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBhZGQgYERNQV9TSEFSRURfQlVGRkVSYCBhbmQgYFBBR0VfUE9PTGAgdG8gYEVuYWJsZUNvbmZpZ3NgIGFzIHdlbGwsIGp1c3QgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgaWYgaXQgaXNuJiMzOTt0IGVuYWJsZWQgYnkgZGVmYXVsdC4KCkFscmlnaHQsIGxldCYjMzk7cyBjb25zb2xpZGF0ZSB0aGlzIGludG8gYSBjbGVhciBzdW1tYXJ5OgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUuCiogICAqKlJlYXNvbmluZzoqKiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRoYXQgd2lsbCBwcmV2ZW50IHRoZSBjb21iaW5hdGlvbiBvZiByZWFkYWJsZSBmcmFnbWVudHMgYW5kIGRldm1lbSBmcmFnbWVudHMgd2l0aGluIHRoZSBzYW1lIFNLQi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiB3aXRoaW4gdGhlIG5ldHdvcmsgY29yZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGRldm1lbSBUQ1AuCiogICAqKkZvY3VzU3ltYm9sczoqKiBJJiMzOTttIGdvaW5nIHRvIHNldCBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIHRvIGludmVzdGlnYXRlIHRoZSBjb2RlLCBhbmQga2VlcCBhIGZvY3VzIG9uIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLgoqICAgKipFbmFibGVDb25maWdzOioqIEkgbmVlZCB0byBhZGQgYE5FVF9ERVZNRU1gLCBgRE1BX1NIQVJFRF9CVUZGRVJgLCBhbmQgYFBBR0VfUE9PTGAuCgpMZXQmIzM5O3MgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfREVWTUVNJiMzNDssCiAgICAmIzM0O0RNQV9TSEFSRURfQlVGRkVSJiMzNDssCiAgICAmIzM0O1BBR0VfUE9PTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19femVyb2NvcHlfc2dfZnJvbV9pdGVyJiMzNDssCiAgICAmIzM0O3NrYl96ZXJvY29weV9pdGVyX3N0cmVhbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCB0byBwcmV2ZW50IG1peGluZyByZWFkYWJsZSBmcmFncyB3aXRoIGRldm1lbSBmcmFncyBpbiB0aGUgc2FtZSBza2IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29yayBjb3JlIGRhdGFncmFtIGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgZm9yIGRldm1lbSBUQ1AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9ERVZNRU0mIzM0OywKICAgICYjMzQ7RE1BX1NIQVJFRF9CVUZGRVImIzM0OywKICAgICYjMzQ7UEFHRV9QT09MJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X196ZXJvY29weV9zZ19mcm9tX2l0ZXImIzM0OywKICAgICYjMzQ7c2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUwOjE2LjU5NDc1NzcxM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzEyMDU5ODM1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJETUFfU0hBUkVEX0JVRkZFUlwiLFxuICAgIFwiUEFHRV9QT09MXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTA6MTYuNTk0NzY2MTUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTMwMDYzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MGFmMWZjZDg4ZWVhYmI1YWE2NjZiNjdhYWNjNmJjNjc2MTU4N2Y2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDI4IDAwOjUwOjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2RhdGFncmFtLmMgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuaW5kZXggYzI4NWM2NDY1OTIzZTQuLjE3M2I1ZDk3YmQ0MDlhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2RhdGFncmFtLmNcXG4rKysgYi9uZXQvY29yZS9kYXRhZ3JhbS5jXFxuQEAgLTcxMiw2ICs3MTIsOSBAQCB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuIFxcdHNpemVfdCB2aXJ0X2FkZHIsIHNpemUsIG9mZjtcXG4gXFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XFxuIFxcbitcXHRpZiAoaSBcXHUwMDI2XFx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG4rXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuK1xcbiBcXHQvKiBEZXZtZW0gZmlsbGluZyB3b3JrcyBieSB0YWtpbmcgYW4gSU9WRUMgZnJvbSB0aGUgdXNlciB3aGVyZSB0aGVcXG4gXFx0ICogaW92X2FkZHJzIGFyZSBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgaW4gYnl0ZXMgaW50byB0aGUgZG1hLWJ1ZiB0b1xcbiBcXHQgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUwOjE3LjA4ODQ2MDMxM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIyMjYyNjg2Nzk5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfREVWTUVNXCIsXG4gICAgXCJETUFfU0hBUkVEX0JVRkZFUlwiLFxuICAgIFwiUEFHRV9QT09MXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIixcbiAgICBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIHRvIHByZXZlbnQgbWl4aW5nIHJlYWRhYmxlIGZyYWdzIHdpdGggZGV2bWVtIGZyYWdzIGluIHRoZSBzYW1lIHNrYi4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JrIGNvcmUgZGF0YWdyYW0gaGFuZGxpbmcsIHNwZWNpZmljYWxseSBmb3IgZGV2bWVtIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODBhZjFmY2Q4OGVlYWJiNWFhNjY2YjY3YWFjYzZiYzY3NjE1ODdmNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDAwOjUwOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGF0YWdyYW0uYyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbmluZGV4IGMyODVjNjQ2NTkyM2U0Li4xNzNiNWQ5N2JkNDA5YSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2RhdGFncmFtLmNcbisrKyBiL25ldC9jb3JlL2RhdGFncmFtLmNcbkBAIC03MTIsNiArNzEyLDkgQEAgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxuIFx0c2l6ZV90IHZpcnRfYWRkciwgc2l6ZSwgb2ZmO1xuIFx0c3RydWN0IG5ldF9pb3YgKm5pb3Y7XG4gXG4rXHRpZiAoaSBcdTAwMjZcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXG4rXHRcdHJldHVybiAtRUZBVUxUO1xuK1xuIFx0LyogRGV2bWVtIGZpbGxpbmcgd29ya3MgYnkgdGFraW5nIGFuIElPVkVDIGZyb20gdGhlIHVzZXIgd2hlcmUgdGhlXG4gXHQgKiBpb3ZfYWRkcnMgYXJlIGludGVycHJldGVkIGFzIGFuIG9mZnNldCBpbiBieXRlcyBpbnRvIHRoZSBkbWEtYnVmIHRvXG4gXHQgKiBzZW5kIGZyb20uIFdlIGRvIG5vdCBzdXBwb3J0IG90aGVyIGl0ZXIgdHlwZXMuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MDoxNy4wODg0NjIwNzNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDI2NjQ0NzYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIENvcmUgRGF0YWdyYW0gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L2NvcmUvZGF0YWdyYW0uY2AuIFNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSBpdCdzIHRvdWNoaW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIHByZXR0eSBmdW5kYW1lbnRhbCBmb3IgemVyby1jb3B5IG9wZXJhdGlvbnMsIHNvIEkgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uLlxuXG5UaGUgaW50ZXJlc3RpbmcgYml0IGlzIHRoZSBhZGRpdGlvbiBvZiB0aGlzIGNoZWNrOlxuXG5gYGBjXG5cdGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcblx0XHRyZXR1cm4gLUVGQVVMVDtcbmBgYFxuXG5TbywgaWYgYGlgICh3aGF0ZXZlciB0aGF0IHJlcHJlc2VudHMgaW4gdGhpcyBjb250ZXh0IOKAkyBwcm9iYWJseSBhbiBpbmRleCBvciBzb21lIGtpbmQgb2YgY291bnRlciB3aXRoaW4gdGhlIGxvb3ApIGlzIG5vbi16ZXJvLCBhbmQgYHNrYl9mcmFnc19yZWFkYWJsZShza2IpYCBpcyB0cnVlLCB3ZSBnZXQgYSAtRUZBVUxULiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29uZGl0aW9uYWwgaXMgYWltaW5nIHRvIHByZXZlbnQuIFwic2tiX2ZyYWdzX3JlYWRhYmxlXCIgaXMgdGhlIGtleSBoZXJlLiBJdCdzIHVzZWQgdG8gY2hlY2sgaWYgZnJhZ3Mgd2l0aGluIHRoZSBza2IgaGF2ZSByZWFkYWJsZSBwZXJtaXNzaW9ucywgc28gdGhpcyBzZWVtcyB0byBiZSBhZGRpbmcgYSByZXN0cmljdGlvbiB0byBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyB3aXRoIHNrYiBmcmFncy5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBjbGVhcmx5IG1vZGlmeWluZyB0aGUgZGF0YWdyYW0gaGFuZGxpbmcgbG9naWMgd2l0aGluIHRoZSBuZXR3b3JrIGNvcmUuIEkgbmVlZCB0byBjYXJlZnVsbHkgYW5hbHl6ZSB0aGUgb3JpZ2luYWwgY29kZSwgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIGFuZCAqd2h5KiB0aGlzIHBhcnRpY3VsYXIgY2hlY2sgaXMgYmVpbmcgaW50cm9kdWNlZC4gV2hhdCBzY2VuYXJpbyBpcyB0aGlzIGd1YXJkaW5nIGFnYWluc3Q/IFNlY3VyaXR5IHZ1bG5lcmFiaWxpdHk/IERhdGEgY29ycnVwdGlvbj8gUGVyZm9ybWFuY2UgaXNzdWU/IEFuZCB3aGF0J3MgdGhlIHNlbWFudGljIG1lYW5pbmcgb2YgYGlgIGluIHRoaXMgZnVuY3Rpb24/XG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIG9mIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgdG8gZGV0ZXJtaW5lIHdoYXQgaXQncyBzdXBwb3NlZCB0byBkbyBhbmQgaG93IHRoZSBwYXRjaCBhZmZlY3RzIGl0LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgY2hlY2sgdG8gYXNzZXNzIGl0cyBpbXBhY3Qgb24gb3ZlcmFsbCBuZXR3b3JrIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MToyMS4zNTQ5MTI5NjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMDExODIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9kYXRhZ3JhbS5jPTcwNj1zdGF0aWMgaW50XFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MDc6emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzA4LVxcdFxcdFxcdCAgICAgIGludCBsZW5ndGgsXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc0OT1pbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2MC1cXHRlbHNlIGlmIChiaW5kaW5nKVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzYxOlxcdFxcdHJldCA9IHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHNrYiwgZnJvbSwgbGVuZ3RoLCBiaW5kaW5nKTtcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc2Mi1cXHRlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjIzLjY2NTA0MTE3MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODI3NTA4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBaZXJvLUNvcHkgRGF0YSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgSSBub3RlIGlzIHRoYXQgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhbiBpbnRlcm5hbCBoZWxwZXIsIGxpa2VseSBzcGVjaWZpYyB0byB0aGUgY29tcGlsYXRpb24gdW5pdCBpdCdzIGRlZmluZWQgaW4uIFRoaXMgc3VnZ2VzdHMgaXQncyBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20gb3V0c2lkZSB0aGlzIHNwZWNpZmljIG1vZHVsZS4gQW5kIGl0IGlzIGNhbGxlZCBieSBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLlxuXG5Ob3csIHRoZSBuYXR1cmFsIHF1ZXN0aW9uIGlzLCBcIldoZXJlICplbHNlKiBpcyBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgIGJlaW5nIHVzZWQ/XCIgS25vd2luZyB0aGUgY2FsbCBjaGFpbiBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBjb250ZXh0IGFuZCBwdXJwb3NlIG9mIHRoaXMgemVyby1jb3B5IGRhdGEgcGF0aC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiB0aGF0IGZ1bmN0aW9uIHRvIGdhaW4gYSBjbGVhcmVyIHBpY3R1cmUuIEl0J3MgdGltZSB0byBmaW5kIHRoZSBjYWxsIHNpdGVzIGZvciBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTE6MjYuNjQ3Nzk0NDcyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTgwMTQ0NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX196ZXJvY29weV9zZ19mcm9tX2l0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzYxPXN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nO1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2Mi1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3NjM6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc2NC1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzMte1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc3NDpcXHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBza2ItXFx1MDAzZXNrLCBza2IsIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzc1LVxcdFxcdFxcdFxcdCAgICAgICBOVUxMKTtcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9NzA3PXplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSxcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzQ4LVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6NzQ5OmludCBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzayxcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc1MC1cXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NzQtfVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzc1OkVYUE9SVF9TWU1CT0woX196ZXJvY29weV9zZ19mcm9tX2l0ZXIpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzc2LVxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03ODc9aW50IHplcm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc5NC1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjc5NTpcXHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoTlVMTCwgTlVMTCwgc2tiLCBmcm9tLCB+MFUsIE5VTEwpO1xcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk2LX1cXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTI9aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xOTMzLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MzQ6XFx0ZXJyID0gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBzaywgc2tiLCBcXHUwMDI2bXNnLVxcdTAwM2Vtc2dfaXRlciwgbGVuLFxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MzUtXFx0XFx0XFx0XFx0ICAgICAgYmluZGluZyk7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM9ODA9c3RhdGljIGludCB2aXJ0aW9fdHJhbnNwb3J0X2ZpbGxfc2tiKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODctXFx0aWYgKHpjb3B5KVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzo4ODpcXHRcXHRyZXR1cm4gX196ZXJvY29weV9zZ19mcm9tX2l0ZXIobXNnLCBOVUxMLCBza2IsXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2bXNnLVxcdTAwM2Vtc2dfaXRlciwgbGVuLCBOVUxMKTtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz0yMTI9c3RhdGljIHN0cnVjdCBza19idWZmICp2aXJ0aW9fdHJhbnNwb3J0X2FsbG9jX3NrYihzdHJ1Y3QgdmlydGlvX3Zzb2NrX3BrdF9pbmZvICppbmZvLFxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTIzOS1cXHQvKiBJZiAndnNrJyAhPSBOVUxMIHRoZW4gcGF5bG9hZCBpcyBhbHdheXMgcHJlc2VudCwgc28gd2VcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MjQwOlxcdCAqIHdpbGwgbmV2ZXIgY2FsbCAnX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoKScgYmVsb3cgd2l0aG91dFxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy0yNDEtXFx0ICogc2V0dGluZyBza2Igb3duZXIgaW4gJ3NrYl9zZXRfb3duZXJfdygpJy4gVGhlIG9ubHkgY2FzZVxcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0Ni1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmM6MjQ3OlxcdC8qIFNldCBvd25lciBoZXJlLCBiZWNhdXNlICdfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJyB1c2VzXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0OC1cXHQgKiBvd25lciBvZiBza2Igd2l0aG91dCBjaGVjayB0byB1cGRhdGUgJ3NrX3dtZW1fYWxsb2MnLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MToyOC42NDU4MTQ1NzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTc3NTg2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIERhdGEgRmxvdzogYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGtleSBpcyB3aGVuIGBiaW5kaW5nYCBpc24ndCBhIG51bGwgcG9pbnRlci4gVGhhdCdzIHRoZSB0cmlnZ2VyLiBXaGVuIHRoYXQgaGFwcGVucywgdGhpcyBgYmluZGluZ2AgdmFyaWFibGUgZ2V0cyBwYXNzZWQgZGlyZWN0bHkgdG8gYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgd2hlbiBgYmluZGluZ2AgaXMgaW5kZWVkICpub3QqIE5VTEwuIEdvdHRhIHNlZSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQgd2l0aCB0aGF0IGNvbmRpdGlvbi4gRGlnZ2luZyBpbnRvIHRoZSBjb2RlLCBhbmQgSSBzZWUgaXQhIFJpZ2h0IHRoZXJlIGluIGBuZXQvY29yZS9za2J1ZmYuY2AgYXQgbGluZSAxOTM0LCBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBtYWtlcyB0aGUgY2FsbDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKG1zZywgc2ssIHNrYiwgXHUwMDI2bXNnLVx1MDAzZW1zZ19pdGVyLCBsZW4sIGJpbmRpbmcpYC4gUGVyZmVjdC4gU28gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgaXMgd2hlcmUgdGhlIGFjdGlvbiBoYXBwZW5zLiBUaGF0J3MgdGhlIHJlbGV2YW50IHBhdGggZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIxMiwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTozMi4yMjM0MDM3OTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MDcxNDAwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD0xNzcxPXN0YXRpYyBpbmxpbmUgaW50IHNrYl96ZXJvY29weV9pdGVyX2RncmFtKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzctXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc4OmludCBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3OS1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5MTA9RVhQT1JUX1NZTUJPTF9HUEwobXNnX3plcm9jb3B5X3VidWZfb3BzKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTExLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5MTI6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L2NvcmUvc2tidWZmLmMtMTkxMy1cXHRcXHRcXHQgICAgIHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NDktfVxcbm5ldC9jb3JlL3NrYnVmZi5jOjE5NTA6RVhQT1JUX1NZTUJPTF9HUEwoc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKTtcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTUxLVxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MTExNj1pbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEzMzgtXFxubmV0L2lwdjQvdGNwLmM6MTMzOTpcXHRcXHRcXHRlcnIgPSBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0oc2ssIHNrYiwgbXNnLCBjb3B5LCB1YXJnLFxcbm5ldC9pcHY0L3RjcC5jLTEzNDAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGJpbmRpbmcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTozMy45NzQxMjI4MTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM0OTMyMzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgdGhlIERhdGEgRmxvdzogYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgYW5kIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgKipcblxuQWxyaWdodCwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgZnVuY3Rpb24gY2FsbC4gSXQncyBjbGVhcmx5IGltcG9ydGFudCwgYW5kIGZyb20gdGhlIGluaXRpYWwgY29udGV4dCwgaXQncyBiZWluZyBpbnZva2VkIHdpdGhpbiB0aGUgYHRjcF9zZW5kbXNnX2xvY2tlZGAgZnVuY3Rpb24uIFRoaXMgbWFrZXMgc2Vuc2U7IHN0cmVhbS1iYXNlZCBwcm90b2NvbHMgbGlrZSBUQ1AgYXJlIG5hdHVyYWwgY2FuZGlkYXRlcyBmb3IgemVyby1jb3B5IG9wZXJhdGlvbnMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdXNlciBkYXRhLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSAqaG93KiB0aGUgYGJpbmRpbmdgIGlzIG9idGFpbmVkIHdpdGhpbiBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gSSBuZWVkIHRvIHRyYWNrIHRoYXQgZG93bjsgaXQncyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0IGJpbmRpbmcgaXMgbWFuYWdlZCB3aWxsIGlsbHVtaW5hdGUgdGhlIG92ZXJhbGwgZGF0YSBmbG93IGFuZCBpZGVudGlmeSBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gVGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHNvY2tldCBidWZmZXIgKGBza2JgKSBhbmQgdGhhdCAnYmluZGluZycgaXMgdGhlIGNvcmUgb2Ygd2hhdCBJIG5lZWQgdG8gdW5kZXJzdGFuZC4gTGV0J3Mgc2VlIGhvdyB0aGV5IGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTE6MzguNzA5MDU3MTU2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjE2ODA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiaW5kaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxubmV0L2lwdjQvdGNwLmMtMTExNy17XFxubmV0L2lwdjQvdGNwLmM6MTExODpcXHRzdHJ1Y3QgbmV0X2Rldm1lbV9kbWFidWZfYmluZGluZyAqYmluZGluZyA9IE5VTEw7XFxubmV0L2lwdjQvdGNwLmMtMTExOS1cXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTExNTgtXFx0XFx0XFx0aWYgKCFzb2NrY19lcnIgXFx1MDAyNlxcdTAwMjYgc29ja2MuZG1hYnVmX2lkKSB7XFxubmV0L2lwdjQvdGNwLmM6MTE1OTpcXHRcXHRcXHRcXHRiaW5kaW5nID0gbmV0X2Rldm1lbV9nZXRfYmluZGluZyhzaywgc29ja2MuZG1hYnVmX2lkKTtcXG5uZXQvaXB2NC90Y3AuYzoxMTYwOlxcdFxcdFxcdFxcdGlmIChJU19FUlIoYmluZGluZykpIHtcXG5uZXQvaXB2NC90Y3AuYzoxMTYxOlxcdFxcdFxcdFxcdFxcdGVyciA9IFBUUl9FUlIoYmluZGluZyk7XFxubmV0L2lwdjQvdGNwLmM6MTE2MjpcXHRcXHRcXHRcXHRcXHRiaW5kaW5nID0gTlVMTDtcXG5uZXQvaXB2NC90Y3AuYy0xMTYzLVxcdFxcdFxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTEzMzktXFx0XFx0XFx0ZXJyID0gc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHNrLCBza2IsIG1zZywgY29weSwgdWFyZyxcXG5uZXQvaXB2NC90Y3AuYzoxMzQwOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBiaW5kaW5nKTtcXG5uZXQvaXB2NC90Y3AuYy0xMzQxLVxcdFxcdFxcdGlmIChlcnIgPT0gLUVNU0dTSVpFIHx8IGVyciA9PSAtRUVYSVNUKSB7XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDE5LVxcdFxcdG5ldF96Y29weV9wdXQodWFyZyk7XFxubmV0L2lwdjQvdGNwLmM6MTQyMDpcXHRpZiAoYmluZGluZylcXG5uZXQvaXB2NC90Y3AuYzoxNDIxOlxcdFxcdG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmdfcHV0KGJpbmRpbmcpO1xcbm5ldC9pcHY0L3RjcC5jLTE0MjItXFx0cmV0dXJuIGNvcGllZCArIGNvcGllZF9zeW47XFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xNDM4LVxcdH1cXG5uZXQvaXB2NC90Y3AuYzoxNDM5OlxcdGlmIChiaW5kaW5nKVxcbm5ldC9pcHY0L3RjcC5jOjE0NDA6XFx0XFx0bmV0X2Rldm1lbV9kbWFidWZfYmluZGluZ19wdXQoYmluZGluZyk7XFxubmV0L2lwdjQvdGNwLmMtMTQ0MS1cXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTI0OTk9c3RhdGljIGludCB0Y3BfcmVjdm1zZ19kbWFidWYoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMjU5OC1cXHRcXHRcXHRcXHRkbWFidWZfY21zZy5mcmFnX3Rva2VuID0gdGNwX3hhX3Bvb2wudG9rZW5zW3RjcF94YV9wb29sLmlkeF07XFxubmV0L2lwdjQvdGNwLmM6MjU5OTpcXHRcXHRcXHRcXHRkbWFidWZfY21zZy5kbWFidWZfaWQgPSBuZXRfZGV2bWVtX2lvdl9iaW5kaW5nX2lkKG5pb3YpO1xcbm5ldC9pcHY0L3RjcC5jLTI2MDAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjM4Ljc4MTIzMTMzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTg4Nzc2MjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqQW5hbHl6aW5nIGEgRGV2bWVtIFRDUCBQYXRjaCoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIHRoZSBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIHRoaXMgbmV3IGNoZWNrOiBgaWYgKGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpKSByZXR1cm4gLUVGQVVMVDtgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBaCwgdGhpcyBpcyBkZWZpbml0ZWx5IHJlbGF0ZWQgdG8gZGV2bWVtIFRDUCwgb3IgZGV2aWNlIG1lbW9yeSBUQ1AsIHdoaWNoLCBvZiBjb3Vyc2UsIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGZvciBUQ1Agb24gc3lzdGVtcyB3aXRoIGRpcmVjdCBtZW1vcnkgYWNjZXNzLlwiXG5cbkdpdmVuIHRoYXQgaXQncyBpbmplY3RpbmcgYW4gZXJyb3IgcmV0dXJuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50LiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgb3IgYW4gZWRnZSBjYXNlIHdpdGhpbiB0aGUgemVyb2NvcHkgb3BlcmF0aW9uIHdoZW4gdXNpbmcgZGV2aWNlIG1lbW9yeS4gVGhlIGNoZWNrIHdpdGggYGlgIGFuZCBgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYilgIGlzIHdoYXQncyBwaXF1aW5nIG15IGludGVyZXN0LiBJIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZSBwYXRjaCBhdXRob3IgaXMgdXNpbmcgYm90aCBvZiB0aGVzZSB0byBkZXRlcm1pbmUgdGhlIGxvZ2ljLCBidXQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgYXR0ZW1wdGluZyB0byBwcm90ZWN0IGFnYWluc3Qgc29tZSBraW5kIG9mIGNvbmN1cnJlbnQgYWNjZXNzIG9yIGJ1ZmZlciBjb3JydXB0aW9uIHdoZW4gdGhlIFNLQiBpcyB1c2luZyBmcmFncy4gSSBzaG91bGQgYWxzbyBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWdzIHJlcXVpcmVkIGZvciBkZXZtZW0gVENQIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgY2hlY2sgZml0cyBpbiB0aGUgZWNvc3lzdGVtLiBJIHNob3VsZCBnbyBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBleGlzdGluZyBjb2RlYmFzZSB0byBmaW5kIG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjA4MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjQ2Ljk3MDAxMDQ1NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNTY5NjYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRfZGV2bWVtX2dldF9iaW5kaW5nXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldm1lbS5jPTM3Mj12b2lkIG5ldF9kZXZtZW1fcHV0X25ldF9pb3Yoc3RydWN0IG5ldF9pb3YgKm5pb3YpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uYy0zNzYtXFxubmV0L2NvcmUvZGV2bWVtLmM6Mzc3OnN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHN0cnVjdCBzb2NrICpzayxcXG5uZXQvY29yZS9kZXZtZW0uYy0zNzgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBkbWFidWZfaWQpXFxuLS1cXG5uZXQvY29yZS9kZXZtZW0uaD0xNTE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmcgKlxcbm5ldC9jb3JlL2Rldm1lbS5oOjE1MjpuZXRfZGV2bWVtX2dldF9iaW5kaW5nKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGRtYWJ1Zl9pZCk7XFxubmV0L2NvcmUvZGV2bWVtLmgtMTUzLXN0cnVjdCBuZXRfaW92ICpcXG4tLVxcbm5ldC9jb3JlL2Rldm1lbS5oPTIyMz1zdGF0aWMgaW5saW5lIHN0cnVjdCBuZXRfZGV2bWVtX2RtYWJ1Zl9iaW5kaW5nICpcXG5uZXQvY29yZS9kZXZtZW0uaDoyMjQ6bmV0X2Rldm1lbV9nZXRfYmluZGluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBkbWFidWZfaWQpXFxubmV0L2NvcmUvZGV2bWVtLmgtMjI1LXtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTExMTY9aW50IHRjcF9zZW5kbXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuLS1cXG5uZXQvaXB2NC90Y3AuYy0xMTU4LVxcdFxcdFxcdGlmICghc29ja2NfZXJyIFxcdTAwMjZcXHUwMDI2IHNvY2tjLmRtYWJ1Zl9pZCkge1xcbm5ldC9pcHY0L3RjcC5jOjExNTk6XFx0XFx0XFx0XFx0YmluZGluZyA9IG5ldF9kZXZtZW1fZ2V0X2JpbmRpbmcoc2ssIHNvY2tjLmRtYWJ1Zl9pZCk7XFxubmV0L2lwdjQvdGNwLmMtMTE2MC1cXHRcXHRcXHRcXHRpZiAoSVNfRVJSKGJpbmRpbmcpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjQ4Ljc3NTcxMjA3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzAwNjM3Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgYGRldm1lbS5jYCBBYnlzcyoqXG5cbk9rYXksIHNvIHdlIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBkZXZpY2UgbWVtb3J5IGFjY2VzcyBtZWNoYW5pc20gd2l0aGluIHRoZSBrZXJuZWwuIFRpbWUgdG8gZ28gcmlnaHQgdG8gdGhlIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgbmV0L2NvcmUvZGV2bWVtLmNgLiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0aGUgbG93LWxldmVsIHN0dWZmIHRvIGxpdmUsIHRoZSBkcml2ZXItc3BlY2lmaWMgbWVtb3J5IG1hcHBpbmcgYW5kIGFjY2VzcyByb3V0aW5lcy4gSSB3YW50IHRvIHNlZSBob3cgdGhleSdyZSBoYW5kbGluZyBwaHlzaWNhbCBhZGRyZXNzZXMsIG1lbW9yeSByZWdpb25zLCBhbmQgYW55IGFzc29jaWF0ZWQgcmVzdHJpY3Rpb25zIG9yIHBlY3VsaWFyaXRpZXMuXG5cbk5leHQsIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmlsZS4gVGhlcmUgYXJlIGxpa2VseSBzb21lIGtlcm5lbCBjb25maWcgZmxhZ3MgdGhhdCBjb250cm9sIHRoZSBlbmFibGluZywgZGlzYWJsaW5nLCBhbmQgc3BlY2lmaWMgYmVoYXZpb3Igb2YgYGRldm1lbS5jYC4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgaW5mbHVlbmNlIHRoZSBiZWhhdmlvciBvZiB0aGUgZnVuY3Rpb25hbGl0eS4gQXJlIHRoZXJlIGFueSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgdG8gY29uc2lkZXI/IEFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyBpZiBpdCBpcyBjb25maWd1cmVkIGEgY2VydGFpbiB3YXk/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5MDIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1Mi4wNzYzNTIzNDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDExNDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldm1lbS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTQ4PW9iai0kKENPTkZJR19ORVRfVEVTVCkgKz0gbmV0X3Rlc3Qub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ5Om9iai0kKENPTkZJR19ORVRfREVWTUVNKSArPSBkZXZtZW0ub1xcbm5ldC9jb3JlL01ha2VmaWxlLTUwLW9iai0kKENPTkZJR19ERUJVR19ORVQpICs9IGxvY2tfZGVidWcub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1Mi4xMzYzNzg4ODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg2NjgxMTkwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBpdCBsb29rcyBsaWtlIGBDT05GSUdfTkVUX0RFVk1FTWAgaXMgYSBoYXJkIHJlcXVpcmVtZW50IGZvciBzb21ldGhpbmcgSSdtIHdvcmtpbmcgb24uIFRoYXQncyBub3QgZW50aXJlbHkgc3VycHJpc2luZywgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSBpdCdzIGJlZW4gdHJpZ2dlcmVkLiBMZXQncyBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLiBUaGUgbmF0dXJhbCBwbGFjZSB0byBsb29rIGlzIHRoZSBgbmV0L0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSBhbGwgdGhlIG5ldHdvcmstcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb24gdGhpcyBvcHRpb24sIHdoYXQgZmVhdHVyZXMgaXQgZW5hYmxlcywgYW5kIHdoYXQgbW9kdWxlcyBhcmUgbm93IHJlbHlpbmcgb24gaXQuIEtub3dpbmcgdGhpcyB3aWxsIGNsYXJpZnkgdGhlIGxhcmdlciBwaWN0dXJlLiBJIHdhbnQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBkZXBlbmRlbmN5LCBhbmQgbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI0NywiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjU1LjAwMzE5MzMzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc2MTg4MDg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RFVk1FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz02Nj1jb25maWcgU0tCX0VYVEVOU0lPTlNcXG4tLVxcbm5ldC9LY29uZmlnLTY4LVxcbm5ldC9LY29uZmlnOjY5OmNvbmZpZyBORVRfREVWTUVNXFxubmV0L0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1Ni43NjUwODE3NzNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE5MTQ2NjY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBhIEtlcm5lbCBDb25maWd1cmF0aW9uIEZsYWcqKlxuXG5Pa2F5LCBzbyBgQ09ORklHX05FVF9ERVZNRU1gIGlzIGRlZmluZWQgYXMgXCJ5XCIuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSBkZWVwZXIgbG9vay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGluZmx1ZW5jaW5nIHRoaXMgc2V0dGluZy4gTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBJJ2xsIHplcm8gaW4gYXJvdW5kIGxpbmUgNjksIHRoYXQncyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGV4cGxhbmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHRoZSBjb250ZXh0IGZvciB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBJIG5lZWQgdG8gc2VlICp3aHkqIHRoaXMgaXMgc2V0LCB3aGF0IG90aGVyIG9wdGlvbnMgaXQgZGVwZW5kcyBvbiBvciBhZmZlY3RzLCBhbmQgdWx0aW1hdGVseSwgd2hhdCBpbXBsaWNhdGlvbnMgdGhpcyBoYXMgZm9yIHRoZSBuZXR3b3JrIHN1YnN5c3RlbS4gVGhpcyB3YXJyYW50cyBhIGNsb3NlciBsb29rLCBlc3BlY2lhbGx5IGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aC4uLiB3ZWxsLCBldmVyeXRoaW5nISBMZXQncyBnZXQgdG8gdGhlIHJvb3Qgb2YgdGhlIG1hdHRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUzMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUxOjU5Ljk1NjU1MTAyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA2MDpcXHRjb25maWcgTkVUX1JFRElSRUNUXFxuICA2MTpcXHRcXHRib29sXFxuICA2MjpcXHRcXG4gIDYzOlxcdGNvbmZpZyBTS0JfREVDUllQVEVEXFxuICA2NDpcXHRcXHRib29sXFxuICA2NTpcXHRcXG4gIDY2OlxcdGNvbmZpZyBTS0JfRVhURU5TSU9OU1xcbiAgNjc6XFx0XFx0Ym9vbFxcbiAgNjg6XFx0XFxuICA2OTpcXHRjb25maWcgTkVUX0RFVk1FTVxcbiAgNzA6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgNzE6XFx0XFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuICA3MjpcXHRcXHRkZXBlbmRzIG9uIERNQV9TSEFSRURfQlVGRkVSXFxuICA3MzpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxcbiAgNzQ6XFx0XFxuICA3NTpcXHRjb25maWcgTkVUX1NIQVBFUlxcbiAgNzY6XFx0XFx0Ym9vbFxcbiAgNzc6XFx0XFxuICA3ODpcXHRjb25maWcgTkVUX0NSQzMyQ1xcbiAgNzk6XFx0XFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MTo1OS45NTY2MjM4NjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUxODE2NDQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1lbW9yeSBBbGxvY2F0aW9uIERlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byBgTkVUX0RFVk1FTWAgaGVyZSwgYW5kIEknbSBpbW1lZGlhdGVseSBub3RpY2luZyBhIGRlcGVuZGVuY3k6IGl0J3MgYnVpbHQgdXBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gVGhhdCdzIG5vdCBlbnRpcmVseSB1bmV4cGVjdGVkLCBnaXZlbiB0aGUgbmF0dXJlIG9mIGRpcmVjdCBtZW1vcnkgYWNjZXNzIGFuZCB0aGUgbmVlZCBmb3IgZWZmaWNpZW50IGJ1ZmZlciBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgbmV0d29yayBzdGFjay4gTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBjbGFyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgYERNQV9TSEFSRURfQlVGRkVSYCBpcyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgbGlrZWx5IGJha2VkIGluIGJhc2VkIG9uIHBsYXRmb3JtIHN1cHBvcnQsIG9yIGlmIGl0IHJlcXVpcmVzIGV4cGxpY2l0IGVuYWJsaW5nIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgdGhpcyB1cGZyb250IHdpbGwgaGF2ZSBhIHRhbmdpYmxlIGltcGFjdCBpbiBvdXIgYnVpbGQgcHJvY2VzcyBhbmQgYW55IHJlbGF0ZWQgZGVidWcgY3ljbGVzLiBLbm93aW5nIHRoaXMsIEkgY2FuIGJlZ2luIHRvIHdvcmsgb3V0IHRoZSBvcHRpbWFsIGNvbmZpZyBmb3IgbXkgbmV0d29yayBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk1NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTI6MDMuNDc0NzkxNTgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzk1NzU0Njk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBETUFfU0hBUkVEX0JVRkZFUlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvS2NvbmZpZz0yMTM9c291cmNlIFxcXCJkcml2ZXJzL2Jhc2UvcmVnbWFwL0tjb25maWdcXFwiXFxuZHJpdmVycy9iYXNlL0tjb25maWctMjE0LVxcbmRyaXZlcnMvYmFzZS9LY29uZmlnOjIxNTpjb25maWcgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2Jhc2UvS2NvbmZpZy0yMTYtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MjowNS4yNzA1NTI2NjdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0ODE0OTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyBhIENvbmZpZ3VyYXRpb24gRmxhZyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIGJvb2xlYW4sIGEgY29uZmlndXJhdGlvbiBmbGFnIHNwZWNpZmljYWxseSwgYW5kIGl0J3MgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzICp1bnByb21wdGVkKi4gVGhhdCBtZWFucyBpdCdzIHByb2JhYmx5IGJlaW5nIHNldCBhcyBhIGNvbnNlcXVlbmNlIG9mICpzb21ldGhpbmcgZWxzZSogYmVpbmcgZW5hYmxlZCBvciBkaXNhYmxlZC4gSXQncyBub3Qgc29tZXRoaW5nIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHkgY2hvb3NpbmcsIGF0IGxlYXN0IG5vdCBkaXJlY3RseS4gSXQncyBkZXJpdmVkLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IHdoYXQncyB0aGUgZGVwZW5kZW5jeT8gV2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBhcmUgYWN0dWFsbHkgcHVsbGluZyB0aGUgdHJpZ2dlciBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgPyBJIG5lZWQgdG8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSByZWxldmFudCBjb25maWcgZmlsZXMsIGh1bnQgZG93biB0aGUgY29uZGl0aW9uYWxzLCBhbmQgdW5kZXJzdGFuZCB0aGUgbG9naWMgdGhhdCBsZWFkcyB0byB0aGlzIGZsYWcgYmVpbmcgc2V0LiBLbm93aW5nIHdoYXQgKmNhdXNlcyogaXQgdG8gYmUgc2V0IGlzIGNyaXRpY2FsLiBJcyBpdCBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbj8gQSBtZW1vcnkgbWFuYWdlbWVudCBzdHJhdGVneT8gT3IgcGVyaGFwcyBhIGNvbXBhdGliaWxpdHkgcmVxdWlyZW1lbnQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBkZXJpdmVkIHNldHRpbmcgYmVmb3JlIEkgY2FuIGJlIGNvbmZpZGVudCBpbiBpdHMgcHJvcGVyIHVzZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIGFuZCBzZWUgd2hhdCdzIGNvbm5lY3RlZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI4NCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUyOjA4LjUxODcwNDg3M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyNjExODUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0PTY1PUFueSBleHBvcnRlcnMgb3IgdXNlcnMgb2YgdGhlIGRtYS1idWYgYnVmZmVyIHNoYXJpbmcgZnJhbWV3b3JrIG11c3QgaGF2ZSBhXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0OjY2OidzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVInIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZ3MuXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYS1idWYucnN0LTY3LVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL0tjb25maWc9Nj1jb25maWcgRFJNX0FDQ0VMX0hBQkFOQUxBQlNcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnLTEyLVxcdHNlbGVjdCBIV01PTlxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnOjEzOlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9LY29uZmlnLTE0LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9ND1jb25maWcgU1lOQ19GSUxFXFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02LVxcdGRlZmF1bHQgblxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnOjc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWctOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZz01Mj1jb25maWcgRE1BQlVGX0tVTklUX1RFU1RcXG4tLVxcbmRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnLTU0LVxcdGRlcGVuZHMgb24gS1VOSVRcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo1NTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy01Ni1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxuZHJpdmVycy9kbWEtYnVmL0tjb25maWc9NjA9bWVudWNvbmZpZyBETUFCVUZfSEVBUFNcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02MS1cXHRib29sIFxcXCJETUEtQlVGIFVzZXJsYW5kIE1lbW9yeSBIZWFwc1xcXCJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZzo2MjpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2RtYS1idWYvS2NvbmZpZy02My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz04PW1lbnVjb25maWcgRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0xMy1cXHRzZWxlY3QgSTJDXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MTQ6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMTUtXFx0c2VsZWN0IFNZTkNfRklMRVxcbi0tXFxuZHJpdmVycy9ncHUvaG9zdDF4L0tjb25maWc9Nj1jb25maWcgVEVHUkFfSE9TVDFYXFxuLS1cXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL2dwdS9ob3N0MXgvS2NvbmZpZzo5OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvZ3B1L2hvc3QxeC9LY29uZmlnLTEwLVxcdHNlbGVjdCBURUdSQV9IT1NUMVhfQ09OVEVYVF9CVVNcXG4tLVxcbmRyaXZlcnMvaWlvL0tjb25maWc9MTU9Y29uZmlnIElJT19CVUZGRVJcXG5kcml2ZXJzL2lpby9LY29uZmlnLTE2LVxcdGJvb2wgXFxcIkVuYWJsZSBidWZmZXIgc3VwcG9ydCB3aXRoaW4gSUlPXFxcIlxcbmRyaXZlcnMvaWlvL0tjb25maWc6MTc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9paW8vS2NvbmZpZy0xOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZz0yPW1lbnVjb25maWcgSU5GSU5JQkFORFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctNy1cXHRkZXBlbmRzIG9uICFBTFBIQVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjg6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9pbmZpbmliYW5kL0tjb25maWctOS1cXHRzZWxlY3QgSVJRX1BPTExcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnPTQ0PWNvbmZpZyBJTkZJTklCQU5EX1VTRVJfTUVNXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvS2NvbmZpZy00Ny1cXHRkZXBlbmRzIG9uIE1NVVxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnOjQ4OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC9LY29uZmlnLTQ5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWc9Mzk9Y29uZmlnIElPTU1VRkRfVEVTVFxcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdWZkL0tjb25maWctNDQtXFx0ZGVwZW5kcyBvbiBJT01NVV9QVF9BTURWMT15IHx8IElPTU1VRkQ9SU9NTVVfUFRfQU1EVjFcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZzo0NTpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL2lvbW11L2lvbW11ZmQvS2NvbmZpZy00Ni1cXHRzZWxlY3QgSU9NTVVGRF9EUklWRVJcXG4tLVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnPTM9Y29uZmlnIFZJREVPQlVGMl9DT1JFXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc6NDpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy01LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZz0xMz1jb25maWcgVklERU9CVUYyX0RNQV9DT05USUdcXG4tLVxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTE2LVxcdHNlbGVjdCBWSURFT0JVRjJfTUVNT1BTXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc6MTc6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWctMTgtXFxuZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL0tjb25maWc9MTk9Y29uZmlnIFZJREVPQlVGMl9WTUFMTE9DXFxuLS1cXG5kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvS2NvbmZpZy0yMi1cXHRzZWxlY3QgVklERU9CVUYyX01FTU9QU1xcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnOjIzOlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi9LY29uZmlnLTI0LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWc9MT1jb25maWcgVklERU9fVEVHUkFfVkRFXFxuLS1cXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy02LVxcdGRlcGVuZHMgb24gVklERU9fREVWXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEvdGVncmEtdmRlL0tjb25maWc6NzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL252aWRpYS90ZWdyYS12ZGUvS2NvbmZpZy04LVxcdHNlbGVjdCBJT01NVV9JT1ZBXFxuLS1cXG5kcml2ZXJzL21pc2MvS2NvbmZpZz0zMDE9Y29uZmlnIFFDT01fRkFTVFJQQ1xcbi0tXFxuZHJpdmVycy9taXNjL0tjb25maWctMzA0LVxcdGRlcGVuZHMgb24gUlBNU0dcXG5kcml2ZXJzL21pc2MvS2NvbmZpZzozMDU6XFx0c2VsZWN0IERNQV9TSEFSRURfQlVGRkVSXFxuZHJpdmVycy9taXNjL0tjb25maWctMzA2LVxcdHNlbGVjdCBRQ09NX1NDTVxcbi0tXFxuZHJpdmVycy90ZWUvS2NvbmZpZz0zPW1lbnVjb25maWcgVEVFXFxuLS1cXG5kcml2ZXJzL3RlZS9LY29uZmlnLTYtXFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxcbmRyaXZlcnMvdGVlL0tjb25maWc6NzpcXHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcXG5kcml2ZXJzL3RlZS9LY29uZmlnLTgtXFx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTkzOlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy94ZW4vS2NvbmZpZz0xNDU9Y29uZmlnIFhFTl9HTlRERVZfRE1BQlVGXFxuLS1cXG5kcml2ZXJzL3hlbi9LY29uZmlnLTE0Ny1cXHRkZXBlbmRzIG9uIFhFTl9HTlRERVYgXFx1MDAyNlxcdTAwMjYgWEVOX0dSQU5UX0RNQV9BTExPQ1xcbmRyaXZlcnMveGVuL0tjb25maWc6MTQ4OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbmRyaXZlcnMveGVuL0tjb25maWctMTQ5LVxcdGhlbHBcXG4tLVxcbnNhbXBsZXMvS2NvbmZpZz0yMzA9Y29uZmlnIFNBTVBMRV9WRklPX01ERVZfTUJPQ0hTXFxuLS1cXG5zYW1wbGVzL0tjb25maWctMjMzLVxcdHNlbGVjdCBWRklPX01ERVZcXG5zYW1wbGVzL0tjb25maWc6MjM0OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbnNhbXBsZXMvS2NvbmZpZy0yMzUtXFx0aGVscFxcbi0tXFxuc291bmQvc29jL2ZzbC9LY29uZmlnPTY9Y29uZmlnIFNORF9TT0NfRlNMX0FTUkNcXG4tLVxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gSEFTX0RNQVxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZzo5OlxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbnNvdW5kL3NvYy9mc2wvS2NvbmZpZy0xMC1cXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTI6MTAuMjQ0ODMxNDc5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMjAzNjE1NjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGZvciBPcHRpbWFsIFJlc291cmNlIEFsbG9jYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHN5c3RlbSwgYW5kIHRoZSBuZWVkIGZvciBgUEFHRV9QT09MYCBoYXMgY29tZSB0byBteSBhdHRlbnRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHRyYWNlIGJhY2sgdGhlIGRlcGVuZGVuY3kgY2hhaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29tcG9uZW50cywgbW9kdWxlcywgb3Igc3Vic3lzdGVtcyBhcmUgbGV2ZXJhZ2luZyB0aGlzIGBQQUdFX1BPT0xgLiBUaGlzIGlzbid0IGp1c3QgYWJvdXQga25vd2luZyBpdCdzICp1c2VkKiwgYnV0ICpob3cqIGl0J3Mgc2VsZWN0ZWQg4oCTIHdoYXQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLCBlbnZpcm9ubWVudGFsIGZhY3RvcnMsIG9yIGV2ZW4gZHluYW1pYyBydW50aW1lIGRlY2lzaW9ucyBkaWN0YXRlIGl0cyBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggcGllY2VzIG9mIGNvZGUgYWN0dWFsbHkgcGVyZm9ybSB0aGUgc2VsZWN0aW9uLCB3aGF0IGNyaXRlcmlhIGFyZSB1c2VkLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgaW50ZXJhY3Rpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoZSBjaG9pY2UuIFRoaXMgaXMgdGhlIGNyaXRpY2FsIG5leHQgc3RlcCB0byBldmFsdWF0ZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IGFuZCBhdm9pZCB1bmV4cGVjdGVkIG1lbW9yeSBhbGxvY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzNjQsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1MzoxMy40NDg0NTEwNDNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3Nzg1Mzg2MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz00ODc9Y29uZmlnIE5FVF9ERVZMSU5LXFxuLS1cXG5uZXQvS2NvbmZpZy00OTAtXFxubmV0L0tjb25maWc6NDkxOmNvbmZpZyBQQUdFX1BPT0xcXG5uZXQvS2NvbmZpZy00OTItXFx0Ym9vbFxcbm5ldC9LY29uZmlnLTQ5My1cXG5uZXQvS2NvbmZpZzo0OTQ6Y29uZmlnIFBBR0VfUE9PTF9TVEFUU1xcbm5ldC9LY29uZmlnLTQ5NS1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTM6MTcuMjI2OTk5MzQ5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTAxMjcwOTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGNvZGUuIEhlcmUncyBob3cgSSdtIHRoaW5raW5nIGFib3V0IGl0OlxuXG4qKkFuYWx5emluZyB0aGUgUEFHRV9QT09MIFNlbGVjdGlvbioqXG5cbkFscmlnaHQsIG15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIHRvIHVuZGVyc3RhbmQgd2hhdCdzIHNlbGVjdGluZyBgUEFHRV9QT09MYC4gVGhpcyBpcyBhIGNydWNpYWwgYXJlYTsgdW5kZXJzdGFuZGluZyB0aGUgYWxsb2NhdGlvbiBtZWNoYW5pc20gaXMgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBhZ2luZy4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBleGFjdCBjYWxscywgY29uZGl0aW9ucywgb3IgYWxnb3JpdGhtcyB0aGF0IHJlc3VsdCBpbiB0aGUgc2VsZWN0aW9uIG9mIHRoaXMgcGFydGljdWxhciBwb29sLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBzZXF1ZW5jZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBmbGFncyBvciBwYXJhbWV0ZXJzIGluZmx1ZW5jaW5nIHRoZSBjaG9pY2U/IElzIHRoaXMgYSBkZWZhdWx0IG9wdGlvbiwgb3IgaXMgaXQgc2VsZWN0ZWQgYmFzZWQgb24gc29tZSBoZXVyaXN0aWNzPyBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIGFzIGZhciBhcyBwb3NzaWJsZSB0byBncmFzcCB0aGUgdW5kZXJseWluZyBsb2dpYy4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBjb25kaXRpb25hbHMsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIG9yIGRlcGVuZGVuY2llcyB0aGF0IGxlYWQgdG8gdGhpcyBzZWxlY3Rpb24uIFVsdGltYXRlbHksIEkgd2FudCB0byB1bmRlcnN0YW5kICp3aHkqIHRoaXMgcG9vbCBpcyBiZWluZyBjaG9zZW4gaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQuIEtub3dpbmcgdGhlIFwid2h5XCIgaXMga2V5IHRvIG9wdGltaXphdGlvbiBhbmQgZGVidWdnaW5nIGRvd24gdGhlIGxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjc3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTM6MjAuMTM3MTMwMDMyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTAyMjYyNzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBQQUdFX1BPT0xcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz00MzU9Y29uZmlnIFZFVEhcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBldGhlcm5ldCBwYWlyIGRldmljZVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQzNzpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00NDM9Y29uZmlnIFZJUlRJT19ORVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ3LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ3LVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ5LVxcdGRlZmF1bHQgeVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg3LVxcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NjA0PWNvbmZpZyBORVRERVZTSU1cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjExOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYxMi1cXHRzZWxlY3QgTkVUX1NIQVBFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc9MTg9Y29uZmlnIE5FVF9BSVJPSEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIxLVxcdHNlbGVjdCBORVRfQUlST0hBX05QVVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWc9MTg9Y29uZmlnIEFMSUJBQkFfRUVBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiA2NEJJVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9NzI9Y29uZmlnIEJDTUdFTkVUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgwLVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjgxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTgyLVxcdHNlbGVjdCBCUk9BRENPTV9QSFkgaWYgQVJDSF9CQ00yODM1XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTIwNz1jb25maWcgQk5YVFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTMtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjE1LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjU4PWNvbmZpZyBCTkdFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2MS1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNjMtXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjY5PWNvbmZpZyBCQ01BU1BcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc1LVxcdHNlbGVjdCBNRElPX0JDTV9VTklNQUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI3NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnPTY9Y29uZmlnIEVOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnPTE5PWNvbmZpZyBUU05FUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yMy1cXHRzZWxlY3QgUEhZTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMz1jb25maWcgRkVDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMS1cXHRzZWxlY3QgRklYRURfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MzI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMzLVxcdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc9MTg9Y29uZmlnIEdWRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz05MT1jb25maWcgSE5TM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTQtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6OTU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTk2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTE0Nz1jb25maWcgSElCTUNHRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTUzLVxcdHNlbGVjdCBSRUFMVEVLX1BIWVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZz02PWNvbmZpZyBISU5JQzNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNC1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjE1OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWctMTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc9ND1jb25maWcgTElCRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQ29tbW9uIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aClcXFwiIGlmIENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnOjY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02My1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZzo2NDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY1OlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTg2PWNvbmZpZyBNVlBQMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkwLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz0zMT1jb25maWcgT0NURU9OVFgyX1BGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzYtXFx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZy0yMC1cXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIxOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIzLVxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc9Nj1jb25maWcgTUxYNF9FTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTktXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZzoxMDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTExLVxcdHNlbGVjdCBNTFg0X0NPUkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBNTFg1X0NPUkVfRU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMxLVxcdGRlcGVuZHMgb24gTkVUREVWSUNFUyBcXHUwMDI2XFx1MDAyNiBFVEhFUk5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBNTFg1X0NPUkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzM6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTM0LVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc9MzM9Y29uZmlnIE1MWFNXX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNS1cXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgTUxYU1dfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzctXFx0ZGVmYXVsdCBtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjctXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjI4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXFx0c2VsZWN0IFBDU19YUENTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTgtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTAtXFx0c2VsZWN0IFZDQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0yOD1jb25maWcgTEFOOTY5WF9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMC1cXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWc6MzE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI1LVxcdHNlbGVjdCBORVRfU0hBUEVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNS1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZzoyNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNy1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvS2NvbmZpZy0xMTMtXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnOjExNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9Mjk9Y29uZmlnIFJBVkJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNS1cXHRzZWxlY3QgTURJT19CSVRCQU5HXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnOjM2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzctXFx0c2VsZWN0IFBIWUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc9MjU9Y29uZmlnIFNOSV9ORVRTRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnLTI4LVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZzoyOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMzAtXFx0c2VsZWN0IE1JSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTgtXFx0c2VsZWN0IFBDU19YUENTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwLVxcdHNlbGVjdCBQSFlMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTI4LVxcdGRlcGVuZHMgb24gUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWc6Mjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVxcdHNlbGVjdCBGV19MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NTA9Y29uZmlnIFRJX0NQU1dcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTUtXFx0c2VsZWN0IE1GRF9TWVNDT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjU2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU3LVxcdHNlbGVjdCBSRUdNQVBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTY5LVxcdGRlcGVuZHMgb24gVElfQ1BUUyB8fCAhVElfQ1BUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NzA6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzEtXFx0c2VsZWN0IFRJX0RBVklOQ0lfTURJT1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAxLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoxMDI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAzLVxcdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMDQ9Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjA4LVxcdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6MjA5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMC1cXHRkZXBlbmRzIG9uIFBSVV9SRU1PVEVQUk9DXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjEtXFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yPWNvbmZpZyBNVDc2X0NPUkVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L0tjb25maWctNS1cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWctMzctXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjI0LjIzOTQwMTM3MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTIxMTg4MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBDb25maWd1cmF0aW9uIGZvciBaZXJvLUNvcHkgYW5kIFRlc3RhYmlsaXR5KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0aGUga2VybmVsIGNvbmZpZyBvcHRpb25zIGludGVyYWN0LCBwYXJ0aWN1bGFybHkgaW4gcmVsYXRpb24gdG8gemVyby1jb3B5IG5ldHdvcmsgb3BlcmF0aW9ucyBhbmQgb3VyIHRlc3Rpbmcgc3RyYXRlZ3kuIEkndmUgYmVlbiB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHdhbnQgdG8gbWFrZSBzdXJlIHdlJ3JlIGNvdmVyaW5nIGFsbCBiYXNlcy4gSXQgc2VlbXMgdGhhdCBgTkVUX0RFVk1FTWAgZ2V0cyBlbmFibGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBib3RoIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgIGFyZSBzZXQuIEFuZCBgUEFHRV9QT09MYCBpdHNlbGYgaXMgc2VsZWN0ZWQgYnkgYEJQRl9TWVNDQUxMYCBpZiB0aGUgYE5FVGAgb3B0aW9uIGlzIHR1cm5lZCBvbi4gUGx1cywgYERNQV9TSEFSRURfQlVGRkVSYCBpcyBwdWxsZWQgaW4gYnkgb3RoZXIgdGhpbmdzIGxpa2UgYFNZTkNfRklMRWAsIGBETUFCVUZfSEVBUFNgLCBhbmQgYERSTWAuXG5cbkluaXRpYWxseSwgSSB0aG91Z2h0LCBcIkxldCdzIGJlIGV4cGxpY2l0IGFuZCBqdXN0IGFkZCBgTkVUX0RFVk1FTWAsIGBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBgUEFHRV9QT09MYCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdlJ3JlIGV4ZXJjaXNpbmcgdGhlc2UgZmVhdHVyZXMgaW4gb3VyIHRlc3RzLlwiIEJ1dCB0aGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBORVRfREVWTUVNYCBpcyBgZGVmX2Jvb2wgeWAsIG1lYW5pbmcgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgaWYgdGhlIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbywgaWYgd2UgY2FuIGd1YXJhbnRlZSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIG1ldCwgd2UgYXJlIGNvdmVyZWQuIFRoYXQgc2FpZCwgSSdtIHRoaW5raW5nIHdlIGNhbiBleHBsaWNpdGx5IHNwZWNpZnkgYE5FVF9ERVZNRU1gIGluIGBFbmFibGVDb25maWdzYCBhbnl3YXkgdG8gZW5zdXJlIGl0J3MgdGVzdGVkLiBBY3R1YWxseSwgc2luY2UgaXQncyBhIGJvb2xlYW4sIHdlIGNhbiBqdXN0IHNheSBgTkVUX0RFVk1FTWAsIHNvIHRoYXQgaXMgcHJvYmFibHkgdGhlIHNpbXBsZXN0IHdheS5cblxuTm93LCBsZXQncyBjaXJjbGUgYmFjayB0byBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBhbmQgc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC4gSSBzZWUgdGhpcyBmdW5jdGlvbiwgd2l0aCB0aGUgYGkgXHUwMDI2XHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShza2IpYCBjaGVjaywgaXMgcGFydCBvZiBgX196ZXJvY29weV9zZ19mcm9tX2l0ZXJgLCB3aGljaCBpbiB0dXJuIGlzIGNhbGxlZCBieSBib3RoIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gLiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBpcyB0aGVuIGNhbGxlZCBieSBgdGNwX3NlbmRtc2dfbG9ja2VkYC4gU28sIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzIGxpa2VseSBhIGtleSBlbnRyeSBwb2ludCB0byBsb29rIGF0LlxuXG5Ib3dldmVyLCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRvIGF2b2lkIFwiZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnNcIiBiZWNhdXNlIHRoZXkgY2FuIHNrZXcgdGhlIHRlc3QgZGlzdHJpYnV0aW9uLiBJJ20gd29uZGVyaW5nIGlmIGB0Y3Bfc2VuZG1zZ19sb2NrZWRgIGlzICp0b28qIGdlbmVyaWMuIEkgbWVhbiwgaXQncyB0aGUgY29yZSBvZiBUQ1Agc2VuZGluZywgc28gaXQncyBib3VuZCB0byBiZSBzdXBlciBhY3RpdmUuIFllcywgaXQgaXMuIExldCdzIG5vdCB1c2UgdGhhdCwgd2UgbmVlZCB0byBsb29rIGZvciBzb21ldGhpbmcgbGVzcyBnZW5lcmljLlxuXG5Pa2F5LCB3aGF0IGFib3V0IGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmA/IFRoYXQncyBleHBvcnRlZCBhbmQgbm9uLXN0YXRpYywgc28gaXQncyBhY2Nlc3NpYmxlLiBMZXQncyBzdGFydCB3aXRoIHRoYXQgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTQyLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjMwLjc2MDU5NDY2NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwMzY4MjgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NjE9c3RydWN0IG5ldF9kZXZtZW1fZG1hYnVmX2JpbmRpbmc7XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzYyLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTc2MzppbnQgX196ZXJvY29weV9zZ19mcm9tX2l0ZXIoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3Qgc29jayAqc2ssXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzY0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3My17XFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaDoxNzc0OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrYi1cXHUwMDNlc2ssIHNrYiwgXFx1MDAyNm1zZy1cXHUwMDNlbXNnX2l0ZXIsIGxlbixcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE3NzUtXFx0XFx0XFx0XFx0ICAgICAgIE5VTEwpO1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NDgtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NDk6aW50IF9femVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzUwLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20sXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTc3NC19XFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3NzU6RVhQT1JUX1NZTUJPTChfX3plcm9jb3B5X3NnX2Zyb21faXRlcik7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03NzYtXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTc4Nz1pbnQgemVyb2NvcHlfc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNzk0LVxcbm5ldC9jb3JlL2RhdGFncmFtLmM6Nzk1OlxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihOVUxMLCBOVUxMLCBza2IsIGZyb20sIH4wVSwgTlVMTCk7XFxubmV0L2NvcmUvZGF0YWdyYW0uYy03OTYtfVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTkxMj1pbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MzMtXFxubmV0L2NvcmUvc2tidWZmLmM6MTkzNDpcXHRlcnIgPSBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIHNrLCBza2IsIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sXFxubmV0L2NvcmUvc2tidWZmLmMtMTkzNS1cXHRcXHRcXHRcXHQgICAgICBiaW5kaW5nKTtcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYz04MD1zdGF0aWMgaW50IHZpcnRpb190cmFuc3BvcnRfZmlsbF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYy04Ny1cXHRpZiAoemNvcHkpXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jOjg4OlxcdFxcdHJldHVybiBfX3plcm9jb3B5X3NnX2Zyb21faXRlcihtc2csIE5VTEwsIHNrYixcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtODktXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZtc2ctXFx1MDAzZW1zZ19pdGVyLCBsZW4sIE5VTEwpO1xcbi0tXFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jPTIxMj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiKHN0cnVjdCB2aXJ0aW9fdnNvY2tfcGt0X2luZm8gKmluZm8sXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjM5LVxcdC8qIElmICd2c2snICE9IE5VTEwgdGhlbiBwYXlsb2FkIGlzIGFsd2F5cyBwcmVzZW50LCBzbyB3ZVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDA6XFx0ICogd2lsbCBuZXZlciBjYWxsICdfX3plcm9jb3B5X3NnX2Zyb21faXRlcigpJyBiZWxvdyB3aXRob3V0XFxubmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jLTI0MS1cXHQgKiBzZXR0aW5nIHNrYiBvd25lciBpbiAnc2tiX3NldF9vd25lcl93KCknLiBUaGUgb25seSBjYXNlXFxuLS1cXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ2LVxcbm5ldC92bXdfdnNvY2svdmlydGlvX3RyYW5zcG9ydF9jb21tb24uYzoyNDc6XFx0LyogU2V0IG93bmVyIGhlcmUsIGJlY2F1c2UgJ19femVyb2NvcHlfc2dfZnJvbV9pdGVyKCknIHVzZXNcXG5uZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnRfY29tbW9uLmMtMjQ4LVxcdCAqIG93bmVyIG9mIHNrYiB3aXRob3V0IGNoZWNrIHRvIHVwZGF0ZSAnc2tfd21lbV9hbGxvYycuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjM0LjQ2NDI4NDY1MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM5NTk2ODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFeGFtaW5pbmcgUG90ZW50aWFsIFplcm8tQ29weSBTeW1ib2xzKipcblxuUmlnaHQsIGBfX3plcm9jb3B5X3NnX2Zyb21faXRlcmAgaXMgYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQgZm9yIG15IGFuYWx5c2lzLiBJdCBzZWVtcyB0byBlbmNhcHN1bGF0ZSBhIGNvcmUgemVyby1jb3B5IG9wZXJhdGlvbi4gQnV0IHdhaXQsIHdoYXQgYWJvdXQgYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWA/IFRoYXQncyBhbHNvIGV4cG9ydGVkIGFuZCBub3Qgc3RhdGljLCB3aGljaCBtYWtlcyBpdCBhbm90aGVyIGludGVyZXN0aW5nIGNhbmRpZGF0ZSB0byBpbnZlc3RpZ2F0ZS4gSXQgZmVlbHMgbGlrZSB0aGVyZSBtaWdodCBiZSBzb21lIG92ZXJsYXAgb3IgYSBkaWZmZXJlbnQgYXBwcm9hY2ggcmVwcmVzZW50ZWQgdGhlcmUuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aGUgZnVuY3Rpb25hbGl0eSBhbmQgcm9sZSBvZiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBhbmQgc2VlIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTWF5YmUgaXQncyBhbiBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24gb3IgcmVsYXRlZCBpbiBzb21lIG1hbm5lci4gVGltZSB0byBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3Mjk0LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMDA6NTM6MzguMjAzODg1Mzc4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzI5OTcwODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrYl96ZXJvY29weV9pdGVyX3N0cmVhbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTE3NzE9c3RhdGljIGlubGluZSBpbnQgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW0oc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtMTc3Ny1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjE3Nzg6aW50IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xNzc5LVxcdFxcdFxcdCAgICAgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MTkxMD1FWFBPUlRfU1lNQk9MX0dQTChtc2dfemVyb2NvcHlfdWJ1Zl9vcHMpO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTE5MTEtXFxubmV0L2NvcmUvc2tidWZmLmM6MTkxMjppbnQgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvY29yZS9za2J1ZmYuYy0xOTEzLVxcdFxcdFxcdCAgICAgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgbGVuLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMTk0OS19XFxubmV0L2NvcmUvc2tidWZmLmM6MTk1MDpFWFBPUlRfU1lNQk9MX0dQTChza2JfemVyb2NvcHlfaXRlcl9zdHJlYW0pO1xcbm5ldC9jb3JlL3NrYnVmZi5jLTE5NTEtXFxuLS1cXG5uZXQvaXB2NC90Y3AuYz0xMTE2PWludCB0Y3Bfc2VuZG1zZ19sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMTMzOC1cXG5uZXQvaXB2NC90Y3AuYzoxMzM5OlxcdFxcdFxcdGVyciA9IHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbShzaywgc2tiLCBtc2csIGNvcHksIHVhcmcsXFxubmV0L2lwdjQvdGNwLmMtMTM0MC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgYmluZGluZyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjQxLjkzNDAzNTc5NVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzQ1MjY2NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGxvb2tzIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIGRlZXBlciBkaXZlLiBJJ3ZlIGdvdCBhIGZlZWxpbmcgaXQncyBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuIExldCdzIHNlZS4uLiBJJ2xsIGRvdWJsZS1jaGVjayBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gLCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYy4gSG1tLCBubywgaXQncyBub3QgYSB2aWFibGUgZm9jdXMgc3ltYm9sLCB1bmZvcnR1bmF0ZWx5LlxuXG5BbHJpZ2h0LCB0aGUgcGF0Y2ggaXRzZWxmIGludHJvZHVjZXMgdGhhdCBjaGVjazogYGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkgcmV0dXJuIC1FRkFVTFQ7YC4gQWgsIHJpZ2h0LCB0aGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZeKAlGl0IGV4cGxpY2l0bHkgcHJldmVudHMgdGhlIHVuZGVzaXJhYmxlIHNpdHVhdGlvbiBvZiBtaXhpbmcgcmVhZGFibGUgYW5kIGRldm1lbSBmcmFnbWVudHMgd2l0aGluIHRoZSBzYW1lIFNLQi4gWWVwLCB0aGF0J3MgZGVmaW5pdGVseSBhIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gRGVmaW5pdGVseSBhIGNoYW5nZSB3b3J0aCB2ZXJpZnlpbmcgd2l0aCByaWdvcm91cyB0ZXN0aW5nLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHdoaWNoIGNvbmZpZ3VyYXRpb25zIHRoaXMgbWlnaHQgaW50ZXJhY3Qgd2l0aC4gSXQgbG9va3MgbGlrZSBgTkVUX0RFVk1FTWAgaXMgdGhlIGtleSBjb25maWcgaGVyZTsgaXQgZGVwZW5kcyBvbiBgRE1BX1NIQVJFRF9CVUZGRVJgIGFuZCBgUEFHRV9QT09MYC4gT2theSwgc28gSSdsbCBhZGQgdGhvc2UgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUaGUgZXhpc3RpbmcgZm9jdXMgc3ltYm9scyBhcmUgc3RpbGwgZ29vZDogYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCBhbmQgb2YgY291cnNlIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBjb25maXJtIHRoYXQgYE5FVF9ERVZNRU1gIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBlbmFibGVyLiBZdXAsIGl0J3MgdGhlIG9uZS4gQW5kIG5vdywgSSBzaG91bGQgYWxzbyB2ZXJpZnkgd2hlcmUgYHNrYl9mcmFnc19yZWFkYWJsZWAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsIGhlYWRlcnMuIEp1c3QgbWFraW5nIHN1cmUgSSBoYXZlIGFsbCB0aGUgcGllY2VzIGluIHBsYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzk4MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1Mzo0Ny4yNzkzMDUxNjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTgzNTc2NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2tiX2ZyYWdzX3JlYWRhYmxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTQ3MT1zdGF0aWMgbmV0ZGV2X3R4X3QgYm54dF9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01NzUtXFx0aWYgKGZyZWVfc2l6ZSA9PSBicC1cXHUwMDNldHhfcmluZ19zaXplIFxcdTAwMjZcXHUwMDI2IGxlbmd0aCBcXHUwMDNjPSBicC1cXHUwMDNldHhfcHVzaF90aHJlc2ggXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo1NzY6XFx0ICAgIHNrYl9mcmFnc19yZWFkYWJsZShza2IpIFxcdTAwMjZcXHUwMDI2ICFsZmxhZ3MpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy01NzctXFx0XFx0c3RydWN0IHR4X3B1c2hfYnVmZmVyICp0eF9wdXNoX2J1ZiA9IHR4ci1cXHUwMDNldHhfcHVzaDtcXG4tLVxcbmluY2x1ZGUvbGludXgvc2tidWZmLmg9MTg4ND1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX3pjb3B5X2Rvd25ncmFkZV9tYW5hZ2VkKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTE4OTAtLyogUmV0dXJuIHRydWUgaWYgZnJhZ3MgaW4gdGhpcyBza2IgYXJlIHJlYWRhYmxlIGJ5IHRoZSBob3N0LiAqL1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6MTg5MTpzdGF0aWMgaW5saW5lIGJvb2wgc2tiX2ZyYWdzX3JlYWRhYmxlKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC0xODkyLXtcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTEyMzM9c3RhdGljIGlubGluZSBib29sIHRjcF9za2JfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBza19idWZmICp0byxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTEyMzktXFx0XFx0ICAgICAgc2tiX3B1cmVfemNvcHlfc2FtZSh0bywgZnJvbSkgXFx1MDAyNlxcdTAwMjZcXG5pbmNsdWRlL25ldC90Y3AuaDoxMjQwOlxcdFxcdCAgICAgIHNrYl9mcmFnc19yZWFkYWJsZSh0bykgPT0gc2tiX2ZyYWdzX3JlYWRhYmxlKGZyb20pKTtcXG5pbmNsdWRlL25ldC90Y3AuaC0xMjQxLX1cXG4tLVxcbm5ldC9jb3JlL2RhdGFncmFtLmM9Mzg5PXN0YXRpYyBpbnQgX19za2JfZGF0YWdyYW1faXRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy00MTAtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo0MTE6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTQxMi1cXHRcXHRnb3RvIHNob3J0X2NvcHk7XFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jPTYzNT1pbnQgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jLTYzOS1cXG5uZXQvY29yZS9kYXRhZ3JhbS5jOjY0MDpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL2RhdGFncmFtLmMtNjQxLVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYz03MDc9emVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MTQtXFxubmV0L2NvcmUvZGF0YWdyYW0uYzo3MTU6XFx0aWYgKGkgXFx1MDAyNlxcdTAwMjYgc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvZGF0YWdyYW0uYy03MTYtXFx0XFx0cmV0dXJuIC1FRkFVTFQ7XFxuLS1cXG5uZXQvY29yZS9kZXYuYz0zNTY5PWludCBza2JfY2hlY2tzdW1faGVscChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMzU4MS1cXG5uZXQvY29yZS9kZXYuYzozNTgyOlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHtcXG5uZXQvY29yZS9kZXYuYy0zNTgzLVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxubmV0L2NvcmUvZGV2LmM9Mzk5MT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTM5OTYtXFxubmV0L2NvcmUvZGV2LmM6Mzk5NzpcXHRpZiAobGlrZWx5KHNrYl9mcmFnc19yZWFkYWJsZShza2IpIHx8XFxubmV0L2NvcmUvZGV2LmMtMzk5OC1cXHRcXHQgICBkZXYtXFx1MDAzZW5ldG1lbV90eCA9PSBORVRNRU1fVFhfTk9fRE1BKSlcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTE5OTc9aW50IHNrYl9jb3B5X3VidWZzKHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMjAwNi1cXG5uZXQvY29yZS9za2J1ZmYuYzoyMDA3OlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtMjAwOC1cXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTIxNzc9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGdmcF90IGdmcF9tYXNrKVxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMjE4Mi1cXG5uZXQvY29yZS9za2J1ZmYuYzoyMTgzOlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtMjE4NC1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTI1MDI9c3RydWN0IHNrX2J1ZmYgKnNrYl9jb3B5X2V4cGFuZChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtMjUxMi1cXG5uZXQvY29yZS9za2J1ZmYuYzoyNTEzOlxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtMjUxNC1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTI4MDg9c3RhdGljIGludCBwc2tiX3RyaW1fcmNzdW1fY29tcGxldGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTI4MTEtXFxubmV0L2NvcmUvc2tidWZmLmM6MjgxMjpcXHRpZiAoc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpIHtcXG5uZXQvY29yZS9za2J1ZmYuYy0yODEzLVxcdFxcdHNrYi1cXHUwMDNlY3N1bSA9IGNzdW1fYmxvY2tfc3ViKHNrYi1cXHUwMDNlY3N1bSxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTI4NzU9dm9pZCAqX19wc2tiX3B1bGxfdGFpbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZGVsdGEpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0yODgyLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjI4ODM6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvY29yZS9za2J1ZmYuYy0yODg0LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MzAxOT1pbnQgc2tiX2NvcHlfYml0cyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCB2b2lkICp0bywgaW50IGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMwMzgtXFxubmV0L2NvcmUvc2tidWZmLmM6MzAzOTpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMwNDAtXFx0XFx0Z290byBmYXVsdDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTMyMDU9c3RhdGljIGJvb2wgX19za2Jfc3BsaWNlX2JpdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMyMjctXFx0ICovXFxubmV0L2NvcmUvc2tidWZmLmM6MzIyODpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTMyMjktXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubmV0L2NvcmUvc2tidWZmLmM9MzQ0OD1pbnQgc2tiX3N0b3JlX2JpdHMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCwgY29uc3Qgdm9pZCAqZnJvbSwgaW50IGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM0NjYtXFxubmV0L2NvcmUvc2tidWZmLmM6MzQ2NzpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM0NjgtXFx0XFx0Z290byBmYXVsdDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTM1Mjk9X193c3VtIHNrYl9jaGVja3N1bShjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBfX3dzdW0gY3N1bSlcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM1NDYtXFxubmV0L2NvcmUvc2tidWZmLmM6MzU0NzpcXHRpZiAoV0FSTl9PTl9PTkNFKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkpXFxubmV0L2NvcmUvc2tidWZmLmMtMzU0OC1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTM2MTE9X193c3VtIHNrYl9jb3B5X2FuZF9jc3VtX2JpdHMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNldCxcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM2MzItXFxubmV0L2NvcmUvc2tidWZmLmM6MzYzMzpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM2MzQtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0zNzAwPXUzMiBza2JfY3JjMzJjKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsIGludCBsZW4sIHUzMiBjcmMpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0zNzE0LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjM3MTU6XFx0aWYgKFdBUk5fT05fT05DRSghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTM3MTYtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz00NDQwPXVuc2lnbmVkIGludCBza2Jfc2VxX3JlYWQodW5zaWduZWQgaW50IGNvbnN1bWVkLCBjb25zdCB1OCAqKmRhdGEsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy00NDYxLVxcbm5ldC9jb3JlL3NrYnVmZi5jOjQ0NjI6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc3QtXFx1MDAzZWN1cl9za2IpKVxcbm5ldC9jb3JlL3NrYnVmZi5jLTQ0NjMtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz02MTcyPWJvb2wgc2tiX3RyeV9jb2FsZXNjZShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBza19idWZmICpmcm9tLFxcbi0tXFxubmV0L2NvcmUvc2tidWZmLmMtNjE5MS1cXG5uZXQvY29yZS9za2J1ZmYuYzo2MTkyOlxcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoZnJvbSkgIT0gc2tiX2ZyYWdzX3JlYWRhYmxlKHRvKSlcXG5uZXQvY29yZS9za2J1ZmYuYy02MTkzLVxcdFxcdHJldHVybiBmYWxzZTtcXG5uZXQvY29yZS9za2J1ZmYuYy02MTk0LVxcbm5ldC9jb3JlL3NrYnVmZi5jOjYxOTU6XFx0aWYgKGxlbiBcXHUwMDNjPSBza2JfdGFpbHJvb20odG8pIFxcdTAwMjZcXHUwMDI2IHNrYl9mcmFnc19yZWFkYWJsZShmcm9tKSkge1xcbm5ldC9jb3JlL3NrYnVmZi5jLTYxOTYtXFx0XFx0aWYgKGxlbilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jPTcwNjI9dm9pZCBza2JfY29uZGVuc2Uoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9jb3JlL3NrYnVmZi5jLTcwNjUtXFx0XFx0aWYgKHNrYi1cXHUwMDNlZGF0YV9sZW4gXFx1MDAzZSBza2ItXFx1MDAzZWVuZCAtIHNrYi1cXHUwMDNldGFpbCB8fFxcbm5ldC9jb3JlL3NrYnVmZi5jOjcwNjY6XFx0XFx0ICAgIHNrYl9jbG9uZWQoc2tiKSB8fCAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2NvcmUvc2tidWZmLmMtNzA2Ny1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvaXB2NC90Y3AuYz0yMTk1PXN0YXRpYyBpbnQgdGNwX3plcm9jb3B5X3JlY2VpdmUoc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMjI2OC1cXG5uZXQvaXB2NC90Y3AuYzoyMjY5OlxcdFxcdFxcdGlmICghc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2lwdjQvdGNwLmMtMjI3MC1cXHRcXHRcXHRcXHRicmVhaztcXG4tLVxcbm5ldC9pcHY0L3RjcC5jPTI0OTk9c3RhdGljIGludCB0Y3BfcmVjdm1zZ19kbWFidWYoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjQvdGNwLmMtMjUxNC1cXG5uZXQvaXB2NC90Y3AuYzoyNTE1OlxcdFxcdGlmIChza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkge1xcbm5ldC9pcHY0L3RjcC5jLTI1MTYtXFx0XFx0XFx0ZXJyID0gLUVOT0RFVjtcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI1NjEtXFxubmV0L2lwdjQvdGNwLmM6MjU2MjpcXHRcXHRcXHQvKiAhc2tiX2ZyYWdzX3JlYWRhYmxlKCkgc2hvdWxkIGluZGljYXRlIHRoYXQgQUxMIHRoZVxcbm5ldC9pcHY0L3RjcC5jLTI1NjMtXFx0XFx0XFx0ICogZnJhZ3MgaW4gdGhpcyBza2IgYXJlIGRtYWJ1ZiBuZXRfaW92cy4gV2UncmUgY2hlY2tpbmdcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI1NjUtXFx0XFx0XFx0ICogaGVyZS4gSWYgdGhlIHRjcCBzdGFjayBpcyBub3Qgc2V0dGluZ1xcbm5ldC9pcHY0L3RjcC5jOjI1NjY6XFx0XFx0XFx0ICogc2tiX2ZyYWdzX3JlYWRhYmxlKCkgY29ycmVjdGx5LCB3ZSBzdGlsbCBkb24ndCB3YW50XFxubmV0L2lwdjQvdGNwLmMtMjU2Ny1cXHRcXHRcXHQgKiB0byBjcmFzaCBoZXJlLlxcbi0tXFxubmV0L2lwdjQvdGNwLmM9MjY1NT1zdGF0aWMgaW50IHRjcF9yZWN2bXNnX2xvY2tlZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbixcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI4MzUtXFx0XFx0XFx0aWYgKGxhc3RfY29waWVkX2RtYWJ1ZiAhPSAtMSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9pcHY0L3RjcC5jOjI4MzY6XFx0XFx0XFx0ICAgIGxhc3RfY29waWVkX2RtYWJ1ZiAhPSAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYikpXFxubmV0L2lwdjQvdGNwLmMtMjgzNy1cXHRcXHRcXHRcXHRicmVhaztcXG5uZXQvaXB2NC90Y3AuYy0yODM4LVxcbm5ldC9pcHY0L3RjcC5jOjI4Mzk6XFx0XFx0XFx0aWYgKHNrYl9mcmFnc19yZWFkYWJsZShza2IpKSB7XFxubmV0L2lwdjQvdGNwLmMtMjg0MC1cXHRcXHRcXHRcXHRlcnIgPSBza2JfY29weV9kYXRhZ3JhbV9tc2coc2tiLCBvZmZzZXQsIG1zZyxcXG4tLVxcbm5ldC9pcHY0L3RjcC5jLTI4NzAtXFxubmV0L2lwdjQvdGNwLmM6Mjg3MTpcXHRcXHRsYXN0X2NvcGllZF9kbWFidWYgPSAhc2tiX2ZyYWdzX3JlYWRhYmxlKHNrYik7XFxubmV0L2lwdjQvdGNwLmMtMjg3Mi1cXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTU3NzM9dGNwX2NvbGxhcHNlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmZfaGVhZCAqbGlzdCwgc3RydWN0IHJiX3Jvb3QgKnJvb3QsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01Nzg2LVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjU3ODc6XFx0XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01Nzg4LVxcdFxcdFxcdGdvdG8gc2tpcF90aGlzO1xcbi0tXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNTgwOS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo1ODEwOlxcdFxcdGlmIChuIFxcdTAwMjZcXHUwMDI2IG4gIT0gdGFpbCBcXHUwMDI2XFx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUobikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODExLVxcdFxcdCAgICB0Y3Bfc2tiX2Nhbl9jb2xsYXBzZV9yeChza2IsIG4pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODIyLVxcdCAgICAoVENQX1NLQl9DQihza2IpLVxcdTAwM2V0Y3BfZmxhZ3MgXFx1MDAyNiAoVENQSERSX1NZTiB8IFRDUEhEUl9GSU4pKSB8fFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjU4MjM6XFx0ICAgICFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy01ODI0LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4NjUtXFx0XFx0XFx0XFx0ICAgIChUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZXRjcF9mbGFncyBcXHUwMDI2IChUQ1BIRFJfU1lOIHwgVENQSERSX0ZJTikpIHx8XFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NTg2NjpcXHRcXHRcXHRcXHQgICAgIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTU4NjctXFx0XFx0XFx0XFx0XFx0Z290byBlbmQ7XFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MzQ5MT1zdGF0aWMgYm9vbCB0Y3BfY2FuX2NvbGxhcHNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNDk2LVxcdFxcdHJldHVybiBmYWxzZTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM6MzQ5NzpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShza2IpKVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNDk4LVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2xvZy5jPTcwMT1zdGF0aWMgdW5zaWduZWQgaW50IG5mdWxubF9nZXRfY29weV9sZW4oY29uc3Qgc3RydWN0IG5mX2xvZ2luZm8gKmxpLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZm5ldGxpbmtfbG9nLmMtNzA5LVxcdFxcdGNvcHlfbGVuID0gbGktXFx1MDAzZXUudWxvZy5jb3B5X2xlbjtcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYzo3MTA6XFx0aWYgKCFza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSlcXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19sb2cuYy03MTEtXFx0XFx0bGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmM9NjkzPXN0YXRpYyB1bnNpZ25lZCBpbnQgbmZxbmxfZ2V0X2RhdGFfbGVuKGNvbnN0IHN0cnVjdCBza19idWZmICplbnRza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jLTY5Ny1cXG5uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19xdWV1ZS5jOjY5ODpcXHRpZiAoIXNrYl9mcmFnc19yZWFkYWJsZShlbnRza2IpKVxcbm5ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX3F1ZXVlLmMtNjk5LVxcdFxcdGRhdGFfbGVuID0gc2tiX2hlYWRsZW4oZW50c2tiKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjExNT1zdGF0aWMgaW50IHBhY2tldF9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjE1Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjIxNTM6XFx0c25hcGxlbiA9IHNrYl9mcmFnc19yZWFkYWJsZShza2IpID8gc2tiLVxcdTAwM2VsZW4gOiBza2JfaGVhZGxlbihza2IpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjE1NC1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MjIyOD1zdGF0aWMgaW50IHRwYWNrZXRfcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyNzItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyMjczOlxcdHNuYXBsZW4gPSBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSA/IHNrYi1cXHUwMDNlbGVuIDogc2tiX2hlYWRsZW4oc2tiKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTIyNzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDAwOjUzOjUxLjY5NzY2OTQ1NFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzg1ODY0Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgQ29yZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgYWRkZWQgYGlmIChpIFx1MDAyNlx1MDAyNiBza2JfZnJhZ3NfcmVhZGFibGUoc2tiKSkgcmV0dXJuIC1FRkFVTFQ7YCBpbiBgemVyb2NvcHlfZmlsbF9za2JfZnJvbV9kZXZtZW1gIGNhdGNoZXMgbXkgZXllLiBJdCdzIGEgcHJvdGVjdGlvbiBtZWNoYW5pc207IGl0J3MgcHJldmVudGluZyB0aGUgZmlsbGluZyBvZiBhIGRldm1lbSBTS0IgaWYgaXQgYWxyZWFkeSBjb250YWlucyByZWFkYWJsZSBmcmFnbWVudHMuIFRoYXQncyBhIGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBJJ2xsIGdpdmUgdGhlbSB0aGF0LlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gLiBOb3csIGxldCdzIHRyYWNlIHRoaXMuIGBza2JfemVyb2NvcHlfaXRlcl9zdHJlYW1gIGlzIGNhbGxlZCB3aXRoaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAsIGFuZCBgc2tiX3plcm9jb3B5X2l0ZXJfZGdyYW1gIGlzIGNhbGxlZCBpbiBgbmV0L3Ztd192c29jay92aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jYCBieSBib3RoIGB2aXJ0aW9fdHJhbnNwb3J0X2ZpbGxfc2tiYCBhbmQgYHZpcnRpb190cmFuc3BvcnRfYWxsb2Nfc2tiYC5cblxuV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZSB0aGF0IGBza2JfemVyb2NvcHlfaXRlcl9kZ3JhbWAgaXMgcGFzc2luZyBhIGBOVUxMYCBmb3IgYGJpbmRpbmdgLiBUaGlzIG1lYW5zIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgaXMgKm9ubHkqIGNhbGxlZCB3aGVuIGBiaW5kaW5nYCBpc24ndCBgTlVMTGAuIEFuZCBJIGNhbiBzZWUgdGhhdCBgYmluZGluZ2AgaXMgKm9ubHkqIG5vbi1gTlVMTGAgaW4gYHNrYl96ZXJvY29weV9pdGVyX3N0cmVhbWAgaW4gYHRjcF9zZW5kbXNnX2xvY2tlZGAuIEdvdCBpdC4gVGhhdCBtZWFucyBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYCBpcyB0aGUgbW9yZSBpbXBvcnRhbnQgZnVuY3Rpb24gdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgZWZmb3J0cy4gSXQgaXMgbW9yZSBsaWtlbHkgdG8gdHJpZ2dlciB0aGUgbmV3IGNvZGUuXG5cbk5vdywgYSBxdWljayBzYW5pdHkgY2hlY2sgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLiAgYE5FVF9ERVZNRU1gIHJlcXVpcmVzIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgLiBPa2F5LiBJJ2xsIGFkZCBgTkVUX0RFVk1FTWAgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgYWRkIGBETUFfU0hBUkVEX0JVRkZFUmAgYW5kIGBQQUdFX1BPT0xgIHRvIGBFbmFibGVDb25maWdzYCBhcyB3ZWxsLCBqdXN0IHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUsIGlmIGl0IGlzbid0IGVuYWJsZWQgYnkgZGVmYXVsdC5cblxuQWxyaWdodCwgbGV0J3MgY29uc29saWRhdGUgdGhpcyBpbnRvIGEgY2xlYXIgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUuXG4qICAgKipSZWFzb25pbmc6KiogVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgaW4gYHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21fZGV2bWVtYCB0aGF0IHdpbGwgcHJldmVudCB0aGUgY29tYmluYXRpb24gb2YgcmVhZGFibGUgZnJhZ21lbnRzIGFuZCBkZXZtZW0gZnJhZ21lbnRzIHdpdGhpbiB0aGUgc2FtZSBTS0IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBuZXR3b3JrIGNvcmUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBkZXZtZW0gVENQLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIEknbSBnb2luZyB0byBzZXQgYF9femVyb2NvcHlfc2dfZnJvbV9pdGVyYCB0byBpbnZlc3RpZ2F0ZSB0aGUgY29kZSwgYW5kIGtlZXAgYSBmb2N1cyBvbiBgc2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtYC5cbiogICAqKkVuYWJsZUNvbmZpZ3M6KiogSSBuZWVkIHRvIGFkZCBgTkVUX0RFVk1FTWAsIGBETUFfU0hBUkVEX0JVRkZFUmAsIGFuZCBgUEFHRV9QT09MYC5cblxuTGV0J3MgdXNlIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgYW5kIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyOTM1LCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQwMDo1Mzo1OS40ODM1MzkwODJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE3ODE5MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZNRU1cIixcbiAgICBcIkRNQV9TSEFSRURfQlVGRkVSXCIsXG4gICAgXCJQQUdFX1BPT0xcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiLFxuICAgIFwic2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgdG8gcHJldmVudCBtaXhpbmcgcmVhZGFibGUgZnJhZ3Mgd2l0aCBkZXZtZW0gZnJhZ3MgaW4gdGhlIHNhbWUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgY29yZSBkYXRhZ3JhbSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGZvciBkZXZtZW0gVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9ERVZNRU1cIixcbiAgICBcIkRNQV9TSEFSRURfQlVGRkVSXCIsXG4gICAgXCJQQUdFX1BPT0xcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3plcm9jb3B5X3NnX2Zyb21faXRlclwiLFxuICAgIFwic2tiX3plcm9jb3B5X2l0ZXJfc3RyZWFtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGB6ZXJvY29weV9maWxsX3NrYl9mcm9tX2Rldm1lbWAgdG8gcHJldmVudCBtaXhpbmcgcmVhZGFibGUgZnJhZ3Mgd2l0aCBkZXZtZW0gZnJhZ3MgaW4gdGhlIHNhbWUgc2tiLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmsgY29yZSBkYXRhZ3JhbSBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGZvciBkZXZtZW0gVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowvjhf8[1] Phase: Succeeded StartedAt: 2026-07-28 00:54:11 +0000 UTC FinishedAt: 2026-07-28 00:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-28 00:54:11 +0000 UTC FinishedAt: 2026-07-28 00:54:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2] Phase: Succeeded StartedAt: 2026-07-28 00:54:11 +0000 UTC FinishedAt: 2026-07-28 05:21:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-28 00:54:11 +0000 UTC FinishedAt: 2026-07-28 05:21:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-28 00:54:11 +0000 UTC FinishedAt: 2026-07-28 00:54:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-28 00:54:11 +0000 UTC FinishedAt: 2026-07-28 00:54:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-1967381762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-28 00:54:42 +0000 UTC FinishedAt: 2026-07-28 01:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-28 00:54:42 +0000 UTC FinishedAt: 2026-07-28 01:24:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9b2ad13-88f9-4ffe-8915-0278525dc152,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-1967381762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3d7af0f3-e7c8-4234-9515-a3fc431e7aff", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3642977216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-28 00:54:42 +0000 UTC FinishedAt: 2026-07-28 01:24:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9b2ad13-88f9-4ffe-8915-0278525dc152,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-1967381762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3d7af0f3-e7c8-4234-9515-a3fc431e7aff", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3642977216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-28 01:24:54 +0000 UTC FinishedAt: 2026-07-28 01:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-28 01:24:54 +0000 UTC FinishedAt: 2026-07-28 01:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-28 01:24:54 +0000 UTC FinishedAt: 2026-07-28 01:25:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-28 01:24:54 +0000 UTC FinishedAt: 2026-07-28 01:25:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-2514397021/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-28 01:25:04 +0000 UTC FinishedAt: 2026-07-28 01:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-28 01:25:04 +0000 UTC FinishedAt: 2026-07-28 01:26:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3d7af0f3-e7c8-4234-9515-a3fc431e7aff,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3642977216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-28 01:27:01 +0000 UTC FinishedAt: 2026-07-28 01:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-28 01:27:01 +0000 UTC FinishedAt: 2026-07-28 01:27:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-28 01:27:01 +0000 UTC FinishedAt: 2026-07-28 02:14:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-28 01:27:01 +0000 UTC FinishedAt: 2026-07-28 02:14:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9b2ad13-88f9-4ffe-8915-0278525dc152,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-2514397021/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "68bf3b64-25d0-4b3b-b5d7-26f552e77ff1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3241404473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-28 01:27:01 +0000 UTC FinishedAt: 2026-07-28 02:13:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*c9b2ad13-88f9-4ffe-8915-0278525dc152,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-2514397021/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "68bf3b64-25d0-4b3b-b5d7-26f552e77ff1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3241404473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-28 02:14:11 +0000 UTC FinishedAt: 2026-07-28 02:14:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-28 02:14:11 +0000 UTC FinishedAt: 2026-07-28 02:14:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-28 02:14:11 +0000 UTC FinishedAt: 2026-07-28 02:16:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-28 02:14:11 +0000 UTC FinishedAt: 2026-07-28 02:16:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*68bf3b64-25d0-4b3b-b5d7-26f552e77ff1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3241404473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-28 02:16:15 +0000 UTC FinishedAt: 2026-07-28 05:21:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-28 02:16:15 +0000 UTC FinishedAt: 2026-07-28 05:21:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*3d7af0f3-e7c8-4234-9515-a3fc431e7aff,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*68bf3b64-25d0-4b3b-b5d7-26f552e77ff1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3642977216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3241404473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-28 02:16:15 +0000 UTC FinishedAt: 2026-07-28 02:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-28 02:16:15 +0000 UTC FinishedAt: 2026-07-28 02:18:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-988509154/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-28 02:16:15 +0000 UTC FinishedAt: 2026-07-28 02:16:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-28 02:16:15 +0000 UTC FinishedAt: 2026-07-28 02:16:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-28 02:16:16 +0000 UTC FinishedAt: 2026-07-28 02:16:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-28 02:18:54 +0000 UTC FinishedAt: 2026-07-28 05:21:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvjhf8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__zerocopy_sg_from_iter","skb_zerocopy_iter_stream"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"bd0e9289e2642f6a5c54faad304ce0f41e926d22","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_DEVMEM","DMA_SHARED_BUFFER","PAGE_POOL"],"series_id":"9e60fd40-f89d-44d7-9eda-ca7f4ef03e59","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-28 02:18:54 +0000 UTC FinishedAt: 2026-07-28 05:21:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3d7af0f3-e7c8-4234-9515-a3fc431e7aff,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*68bf3b64-25d0-4b3b-b5d7-26f552e77ff1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3642977216/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-build-action-3241404473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvjhf8/series-workflowvjhf8-convert-artifact-988509154/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}