Name: series-workflow69wg4 Phase: Failed StartedAt: 2026-09-09 12:54:49 +0000 UTC FinishedAt: 2026-09-09 12:57:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow69wg4[0] Phase: Succeeded StartedAt: 2026-09-09 12:54:49 +0000 UTC FinishedAt: 2026-09-09 12:57:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow69wg4[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 12:54:49 +0000 UTC FinishedAt: 2026-09-09 12:57:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY2hpcCByZXNldCBsb2dpYyBhbmQgdGltaW5nIGluIHJ0bDgzNjVtYl9yZXNldF9jaGlwKCkgd2l0aGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgYXR0YWNoZWQgdmlhIFNNSSBvciBNRElPIGJ1c2VzIGRlZmluZWQgdmlhIERldmljZSBUcmVlIChPRiksIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU0MTRjMTU1NDE0ZGMzMGZhYzU2MmU0MmE2ODE1MmM2NGRmZjNhYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDEyOjU2OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXG5pbmRleCBmODIyMGQ4MzJlNDYwLi4xOWUyY2Y2MDVkNGU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuQEAgLTEzNiw2ICYjNDM7MTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4mIzQzOy8qIFRpbWUgdGhlIGNoaXAgbmVlZHMgdG8gY29tcGxldGUgYSByZXNldCwgcGVyIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiAqL1xuJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVNcdDEwMDBcbiYjNDM7XG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgxLDE3ICYjNDM7Mjk4NCwyNyBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiB7XG4gXHR1MzIgdmFsO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRwcml2LVx1MDAzZXdyaXRlX3JlZ19ub2Fjayhwcml2LCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsXG4gXHRcdFx0ICAgICAgRklFTERfUFJFUChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLLCAxKSk7XG4gXG4tXHQvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXBcbi1cdCAqIGZvciAxMDAgbXMgYmVmb3JlIGFjY2Vzc2luZyBhbnkgcmVnaXN0ZXJzIHRvIHByZXZlbnQgQUNLIHRpbWVvdXRzLlxuJiM0MztcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGVcbiYjNDM7XHQgKiByZXNldCBiaXQgY2xlYXJzIGJlZm9yZSB0aGF0IHRpbWUgaXMgdXAsIGFuZCBpdCBvbmx5IHJlcG9ydHMgdGhhdFxuJiM0MztcdCAqIHRoZSByZWdpc3RlciBibG9jayBpcyBiYWNrLCBub3QgdGhhdCB0aGUgY2hpcCBoYXMgZmluaXNoZWQgaXRzXG4mIzQzO1x0ICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nXG4mIzQzO1x0ICogYW55dGhpbmcuXG4gXHQgKi9cbi1cdG1zbGVlcCgxMDApO1xuLVx0cmV0dXJuIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsXG4tXHRcdFx0XHRcdCEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbi1cdFx0XHRcdFx0MjAwMDAsIDFlNik7XG4mIzQzO1x0bXNsZWVwKFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVMpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCBcdTAwMjZ2YWwpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKVxuJiM0MztcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY2hpcCByZXNldCBsb2dpYyBhbmQgdGltaW5nIGluIHJ0bDgzNjVtYl9yZXNldF9jaGlwKCkgd2l0aGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgYXR0YWNoZWQgdmlhIFNNSSBvciBNRElPIGJ1c2VzIGRlZmluZWQgdmlhIERldmljZSBUcmVlIChPRiksIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0MTRjMTU1NDE0ZGMzMGZhYzU2MmU0MmE2ODE1MmM2NGRmZjNhYTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDEyOjU2OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMKaW5kZXggZjgyMjBkODMyZTQ2MC4uMTllMmNmNjA1ZDRlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jCkBAIC0xMzYsNiAmIzQzOzEzNiw5IEBACiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0sJMHgwMDAyCiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0sJMHgwMDAxCiAKJiM0MzsvKiBUaW1lIHRoZSBjaGlwIG5lZWRzIHRvIGNvbXBsZXRlIGEgcmVzZXQsIHBlciBSZWFsdGVrIGRvY3VtZW50YXRpb24gKi8KJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVMJMTAwMAomIzQzOwogLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovCiAjZGVmaW5lIFJUTDgzNjVNQl9JTlRSX1BPTEFSSVRZX1JFRwkweDExMDAKICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLCTB4MDAwMQpAQCAtMjk4MSwxNyAmIzQzOzI5ODQsMjcgQEAgc3RhdGljIGludCBydGw4MzY1bWJfc3dpdGNoX2luaXQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdikKIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdikKIHsKIAl1MzIgdmFsOwomIzQzOwlpbnQgcmV0OwogCiAJcHJpdi0mZ3Q7d3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywKIAkJCSAgICAgIEZJRUxEX1BSRVAoUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSywgMSkpOwogCi0JLyogUmVhbHRlayBkb2N1bWVudGF0aW9uIHNheXMgdGhlIGNoaXAgbmVlZHMgMSBzZWNvbmQgdG8gcmVzZXQuIFNsZWVwCi0JICogZm9yIDEwMCBtcyBiZWZvcmUgYWNjZXNzaW5nIGFueSByZWdpc3RlcnMgdG8gcHJldmVudCBBQ0sgdGltZW91dHMuCiYjNDM7CS8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGUKJiM0MzsJICogcmVzZXQgYml0IGNsZWFycyBiZWZvcmUgdGhhdCB0aW1lIGlzIHVwLCBhbmQgaXQgb25seSByZXBvcnRzIHRoYXQKJiM0MzsJICogdGhlIHJlZ2lzdGVyIGJsb2NrIGlzIGJhY2ssIG5vdCB0aGF0IHRoZSBjaGlwIGhhcyBmaW5pc2hlZCBpdHMKJiM0MzsJICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nCiYjNDM7CSAqIGFueXRoaW5nLgogCSAqLwotCW1zbGVlcCgxMDApOwotCXJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7bWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCwKLQkJCQkJISh2YWwgJmFtcDsgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSyksCi0JCQkJCTIwMDAwLCAxZTYpOwomIzQzOwltc2xlZXAoUlRMODM2NU1CX0NISVBfUkVTRVRfVElNRV9NUyk7CiYjNDM7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkKHByaXYtJmd0O21hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCAmYW1wO3ZhbCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAodmFsICZhbXA7IFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0spCiYjNDM7CQlyZXR1cm4gLUVUSU1FRE9VVDsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODM2NW1iX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQzMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFJUTDgzNjVNQiBEU0EgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IHRhcmdldHMgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaW52b2x2ZXMgdGhlIFJlYWx0ZWsgUlRMODM2NU1CLCBhbmQgdGhhdCBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBEYXRhIFN3aXRjaGluZyBBcmNoaXRlY3R1cmUgKERTQSkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIHZlcmlmeSB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkLiBBaCwgaXQmIzM5O3MgYHJ0bDgzNjVtYl9yZXNldF9jaGlwKClgIGluIHRoYXQgc2FtZSBmaWxlLiBUaGlzIGRyaXZlciBtdXN0IGhhbmRsZSB0aGUgcmVzZXQgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgcHJldHR5IGZ1bmRhbWVudGFsLgoKTm93LCBpdCYjMzk7cyB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgZHJpdmVyLiBJcyBpdCBmb3IgYSBjb21tb25seSB1c2VkIHN3aXRjaD8gT3IgaXMgaXQgcGFydCBvZiBzb21lIG1vcmUgc3BlY2lhbGl6ZWQgaGFyZHdhcmU/IEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBEU0Egc3dpdGNoIGRyaXZlciBmb3IgdGhlIFJUTDgzNjVNQiwgSSBoYXZlIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgd2FudCB0byBkZXRlcm1pbmUgdGhlIHJlYWNoYWJpbGl0eSBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlLiBJcyB0aGlzIGNvZGUgYWN0aXZlbHkgdXNlZCwgb3IgaXMgaXQgcG90ZW50aWFsbHkgZGVhZCBjb2RlPwoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJiMzOTtsbCBzdGFydCBieSBncmVwcGluZyB0aGUgY29kZSBmb3IgdXNhZ2UgYW5kIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVhZCB0aGUgcmVsZXZhbnQgZmlsZXMg4oCTIEtjb25maWcsIHByb2JhYmx5LiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGFuZCBzZWUgd2hlcmUgdGhpcyBkcml2ZXIgZml0cyBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9EU0FfUkVBTFRFSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZz0xNj1pZiBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjE4OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjYtXHRib29sIFwmIzM0O1JlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MzI6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6Mzk6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgRFNBIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNyYWNrIG9wZW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIOKAkyBvciBhdCBsZWFzdCwgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFJlYWx0ZWsgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXIgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYXJlIGJlaW5nIGNvbnRyb2xsZWQgaGVyZSwgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgdG8gdXMsIGFuZCBob3cgd2UgY2FuIGJlc3QgbGV2ZXJhZ2UgdGhlbSBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yOgoKKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3Igb3B0aW9ucyBkb2VzIHRoaXMgZGVwZW5kIG9uPyBBcmUgdGhlcmUgc3BlY2lmaWMgbmV0d29yayBzdWJzeXN0ZW1zIG9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGl0IHJlcXVpcmVzPyBJZGVudGlmeWluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBzbW9vdGggaW50ZWdyYXRpb24gYW5kIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIGNvbmZsaWN0cy4KKiAgICoqRmVhdHVyZSBDb250cm9sOioqIFdoYXQgc3BlY2lmaWMgUmVhbHRlayBzd2l0Y2ggZmVhdHVyZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGlzIEtjb25maWcgZmlsZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYmFzaWMgdGhpbmdzIGxpa2UgcG9ydCBjb25maWd1cmF0aW9uIChzcGVlZCwgZHVwbGV4KSwgVkxBTiBzdXBwb3J0LCBRb1MgY2FwYWJpbGl0aWVzLCBvciBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgdHJhZmZpYyBzaGFwaW5nIGFuZCBtaXJyb3Jpbmc/IFRoZSBncmFudWxhcml0eSBvZiBjb250cm9sIGlzIGtleS4KKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGVhY2ggb3B0aW9uPyBLbm93aW5nIHRoZSBkZWZhdWx0cyBwcm92aWRlcyBjb250ZXh0LCBwYXJ0aWN1bGFybHkgd2hlbiBpbnZlc3RpZ2F0aW5nIHBvdGVudGlhbCBpc3N1ZXMgb3IgY3VzdG9taXppbmcgdGhlIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBib2FyZCBvciBuZXR3b3JrIHNldHVwLgoqICAgKipIZWxwIFRleHQ6KiogSG9wZWZ1bGx5LCB0aGUgS2NvbmZpZyBmaWxlIGhhcyBnb29kLCBkZXNjcmlwdGl2ZSBoZWxwIHRleHQuIFRoaXMgaXMgYSB2aXRhbCByZXNvdXJjZSBmb3IgYW55b25lIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBDbGVhciBhbmQgY29uY2lzZSBleHBsYW5hdGlvbnMgc2F2ZSBhIGxvdCBvZiB0aW1lIGFuZCBndWVzc3dvcmsuCiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBgaWZgIHN0YXRlbWVudHMgb3Igb3RoZXIgY29uZGl0aW9uYWwgbG9naWMuIFRoaXMgd2lsbCBzaG93IGhvdyBvcHRpb25zIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9ucyBvciBoYXJkd2FyZSBjb25zdHJhaW50cy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyBkaWZmZXJlbnQgUmVhbHRlayBzd2l0Y2ggbW9kZWxzIG9yIGRyaXZlciB2ZXJzaW9ucyBhcmUgaGFuZGxlZC4KKiAgICoqSW50ZWdyYXRpb24gUG9pbnRzOioqIEkmIzM5O2xsIGJlIGdsYW5jaW5nIGZvciBhbnkgcmVmZXJlbmNlcyB0byBvdGhlciBLY29uZmlnIGZpbGVzIG9yIGRyaXZlciBjb21wb25lbnRzLiBUaGlzIG1heSBoZWxwIGluIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBwb2ludHMsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmsgc3Vic3lzdGVtcyBvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgUmVhbHRlayBjb21wb25lbnRzLgoKRXNzZW50aWFsbHksIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciB0aGlzIGRyaXZlciBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHRoZSByb2FkbWFwLiBOb3csIGxldCYjMzk7cyBnZXQgcmVhZGluZyBhbmQgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIE5FVF9EU0FfUkVBTFRFS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICAgNjpcdFx0c2VsZWN0IElSUV9ET01BSU5cbiAgIDc6XHRcdHNlbGVjdCBSRUFMVEVLX1BIWVxuICAgODpcdFx0c2VsZWN0IFJFR01BUFxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFJlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGNoaXBzLlxuICAxMTpcdFxuICAxMjpcdFx0ICBOb3RlIHRoYXQgYXQgbGVhc3Qgb25lIGludGVyZmFjZSBkcml2ZXIgbXVzdCBiZSBlbmFibGVkIGZvciB0aGVcbiAgMTM6XHRcdCAgc3ViZHJpdmVycyB0byBiZSBsb2FkZWQuIE1vcmVvdmVyLCBhbiBpbnRlcmZhY2UgZHJpdmVyIGNhbm5vdCBhY2hpZXZlXG4gIDE0Olx0XHQgIGFueXRoaW5nIHdpdGhvdXQgYXQgbGVhc3Qgb25lIHN1YmRyaXZlciBlbmFibGVkLlxuICAxNTpcdFxuICAxNjpcdGlmIE5FVF9EU0FfUkVBTFRFS1xuICAxNzpcdFxuICAxODpcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xuICAxOTpcdFx0Ym9vbCBcJiMzNDtSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAgMjA6XHRcdGRlcGVuZHMgb24gT0ZcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkXG4gIDIzOlx0XHQgIHRocm91Z2ggTURJTy5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTkVUX0RTQV9SRUFMVEVLX1NNSVxuICAyNjpcdFx0Ym9vbCBcJiMzNDtSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBPRlxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbm5lY3RlZFxuICAzMDpcdFx0ICB0aHJvdWdoIFNNSS5cbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQlxuICAzMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclwmIzM0O1xuICAzNDpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX1JFQUxURUtfU01JIHx8IE5FVF9EU0FfUkVBTFRFS19NRElPXG4gIDM1Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMOF80XG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUItVkMgYW5kIFJUTDgzNjdTLlxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDQxOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19TTUkgfHwgTkVUX0RTQV9SRUFMVEVLX01ESU9cbiAgNDI6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19SVEw0X0FcbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBSZWFsdGVrIFJUTDgzNjZSQi5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXG4gIDQ3Olx0XHRib29sXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIChMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCKVxuICA0OTpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXG4gIDUwOlx0XHRkZWZhdWx0IE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcbiAgNTE6XHRcbiAgNTI6XHRlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBSVEw4MzY1TUIgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcnRsODM2NW1iX21haW4uY2AgZHJpdmVyIGlzIGluaXRpYWxpemVkIGFuZCBwcm9iZWQuIE15IHByaW1hcnkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgaXRzIG9wZXJhdGlvbiBoaW5nZXMgb24gcGFydGljdWxhciBwaHlzaWNhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgcGVyaGFwcyByZXF1aXJpbmcgRGV2aWNlIFRyZWUgKE9GKSwgdGhlIE1ESU8gYnVzLCBvciBldmVuIHRoZSBTTUkgYnVzLiBNeSBpbW1lZGlhdGUgY291cnNlIG9mIGFjdGlvbiBpcyB0byBleHBsb3JlIHRoZSByZWxldmFudCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UmIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7cmVhbHRlay1tZGlvLmMmIzM0OywKICAgICYjMzQ7cmVhbHRlay1tZGlvLmgmIzM0OywKICAgICYjMzQ7cmVhbHRlay1zbWkuYyYjMzQ7LAogICAgJiMzNDtyZWFsdGVrLXNtaS5oJiMzNDssCiAgICAmIzM0O3JlYWx0ZWsuaCYjMzQ7LAogICAgJiMzNDtydGw4MzY1bWJfbDIuYyYjMzQ7LAogICAgJiMzNDtydGw4MzY1bWJfbDIuaCYjMzQ7LAogICAgJiMzNDtydGw4MzY1bWJfbWFpbi5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjVtYl90YWJsZS5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjVtYl90YWJsZS5oJiMzNDssCiAgICAmIzM0O3J0bDgzNjVtYl92bGFuLmMmIzM0OywKICAgICYjMzQ7cnRsODM2NW1iX3ZsYW4uaCYjMzQ7LAogICAgJiMzNDtydGw4MzY2LWNvcmUuYyYjMzQ7LAogICAgJiMzNDtydGw4MzY2cmItbGVkcy5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjZyYi5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjZyYi5oJiMzNDssCiAgICAmIzM0O3J0bDgzeHguYyYjMzQ7LAogICAgJiMzNDtydGw4M3h4LmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwODIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUmVhbHRlayBTd2l0Y2ggRHJpdmVyIFByb2JlIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayBkcml2ZXIgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN3aXRjaCBkZXZpY2VzIGFyZSBiZWluZyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYHJ0bDgzNjVtYl9wcm9iZWAsIGByZWFsdGVrX3NtaV9wcm9iZWAsIGFuZCBgcmVhbHRla19tZGlvX3Byb2JlYCBmdW5jdGlvbnMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgZGlmZmVyZW50IFJlYWx0ZWsgc3dpdGNoIGNoaXBzZXRzLCBvciBwZXJoYXBzIGRpZmZlcmVudCBpbnRlcmZhY2VzIGxpa2UgU01JIG9yIE1ESU8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIFdoYXQgY2hlY2tzIGFyZSB0aGV5IHBlcmZvcm1pbmc/IFdoYXQgcmVzb3VyY2VzIGFyZSB0aGV5IGFsbG9jYXRpbmcgYW5kIGluaXRpYWxpemluZz8gQXJlIHRoZXkgcmVseWluZyBvbiBwbGF0Zm9ybS1zcGVjaWZpYyBkYXRhLCBvciBhcmUgdGhlcmUgbW9yZSBnZW5lcmljIG1ldGhvZHMgYXQgcGxheT8gSSYjMzk7bGwgcHJvYmFibHkgbG9vayBmb3IgdGhlIG1hdGNoaW5nIGByZW1vdmVgIGZ1bmN0aW9ucyBzaG9ydGx5IGFmdGVyIHRoaXMgc28gSSBoYXZlIGEgcGljdHVyZSBvZiB0aGUgbGlmZWN5Y2xlLiBJIGV4cGVjdCB0byBiZSBhYmxlIHRvIG1hcCBhIHBhcnRpY3VsYXIgc3dpdGNoIHRvIGVhY2ggb2YgdGhlc2UsIGJ1dCBJIHdvbmRlciBpZiB0aGVyZSBhcmUgb3ZlcmxhcHBpbmcgZnVuY3Rpb25zLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEFyZSB0aGVyZSBhbnkgY29tbW9uIGVycm9yIGhhbmRsaW5nIHBhdHRlcm5zIHRoYXQgSSBjYW4gbGV2ZXJhZ2UgaW4gbXkgY3VycmVudCBwcm9qZWN0PyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgUmVhbHRlayBzd2l0Y2ggaW50ZXJmYWNlcyBhcmUgZGV0ZWN0ZWQgYW5kIGNvbmZpZ3VyZWQuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBmaXJzdCBvbmXigKYKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2ODMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlPTE3PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgJiM0Mzs9IHJ0bDgzNjVtYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxOTpydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMDpcdFx0ICBydGw4MzY1bWJfdGFibGUubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjE6XHRcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XHRcdCAgcnRsODM2NW1iX2wyLm8gXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIzOiMgZW5kIG9mIHJ0bDgzNjVtYi1vYmpzXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5Mz1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjk6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX2wyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwOiNpbmNsdWRlIFwmIzM0O3J0bDgzNjVtYl90YWJsZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTMtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDA6c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjX2tleSBrZXk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMDItXHR1OCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMTUtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTIyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTIzOnN0cnVjdCBydGw4MzY1bWJfbDJfbWMge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tY19rZXkga2V5O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTI1LVx0dTE2IG1lbWJlcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTY0OnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgKnVjLCB1MTYgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIwMzpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b19tYyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyNjI6ICogcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKCkgLSBnZXQgdGhlIG5leHQgVW5pY2FzdCBMMiBlbnRyeVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYzLSAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4MS0gKiovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODI6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVx0XHRcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODUtXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4NjpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XHRydGw4MzY1bWJfbDJfZGF0YV90b191YyhkYXRhLCBcdTAwMjZ1Yyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA2LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMxMDpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMxMS1cdHUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMyOC1cdHVjLmFnZSA9IDE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XHRydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShcdTAwMjZ1YywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzEtXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMzLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNDU6aW50IHJ0bDgzNjVtYl9sMl9kZWxfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0OS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzUxLVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYwLVx0dWMuYWdlID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2MTpcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFx1MDAyNnVjLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2ODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4My1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NDk6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTAtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1My1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyBtYyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDU1LVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY1LVx0bWMuaXNfc3RhdGljID0gMTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2NjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2OC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzQtXHRcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ3NTpcdFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXHUwMDI2bWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc2LVx0XHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ5MDpcdFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVx0fSBlbHNlIGlmIChyZXQgPT0gLUVOT0VOVCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUwODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MDktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUxOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyMS1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjU6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjYtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzEtXHRtYy5rZXkuaXZsID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNi1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NTA6XHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcdTAwMjZtYyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NTEtXHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2Ny1cdH1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU2ODpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3MC1cdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NzE6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTYtXHRcdFx0ICAgICBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE3OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xOS1cdFx0XHR1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMDppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjItXHRcdFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjM6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI1OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXHRcdFx0dTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyODppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI5LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0LSAqIHJlcXVpcmUgdGhlIHJ0bDgzNjdkIHZlbmRvciBkcml2ZXIuIFdpdGggYWxsIHRoaXMgdW5jZXJ0YWludHksIHRoZSBkcml2ZXIgaGFzXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OiAqIGJlZW4gbW9kZXN0bHkgbmFtZWQgcnRsODM2NW1iLiBGdXR1cmUgaW1wbGVtZW50b3JzIG1heSB3aXNoIHRvIHJlbmFtZSB0aGluZ3NcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDktI2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMDojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfbDIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX3ZsYW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNTktICogMy1iaXQgTVNCIGZpZWxkIChDVFJMMSkuIFRoZSBjaGlwIHJlc2V0cyB0aGVtIHRvIDB4MUZGRkY7IHNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyNjA6ICogcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cygpLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjEtICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjctI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX01BQ19MT09QQkFDS19NQVNLXHRcdDB4MDA0MFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0Mjg6LyogU2VlIFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyOS0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfVkxBTl9FR1JFU1NfTU9ERV9NQVNLXHRcdDB4MDAzMFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDMyLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzM6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzQtICogQFJUTDgzNjVNQl9WTEFOX0VHUkVTU19NT0RFX09SSUdJTkFMOiBmb2xsb3cgdW50YWcgbWFzayBpbiBWTEFONGsgdGFibGUgZW50cnlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDQzOmVudW0gcnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDQtXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4NzplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4OC1cdFJUTDgzNjVNQl9NSUJfaWZJbk9jdGV0cyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU0OC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTQ5OnN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTAtXHR1MzIgb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NTg6c3RhdGljIHN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIgcnRsODM2NW1iX21pYl9jb3VudGVyc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTktXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYxOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjE5OnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMi1cdHUxNiByZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjYtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyOC1cdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjM3LVx0eyAweDEyMDAsIDB4N0ZDQiB9LCB7IDB4MDg4NCwgMHgwMDAzIH0sIHsgMHgwNkVCLCAweDAwMDEgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0Ni0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ3OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1fc2dtaWlbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjUwLVx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1OC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU5OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2MC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1faHNnbWlpW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Mi1cdHsgMHgwNTAwLCAweDgyRjAgfSwgeyAweDA1MDEsIDB4RjE5NSB9LCB7IDB4MDUwMiwgMHgzMUEyIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY2NzplbnVtIHJ0bDgzNjVtYl9waHlfaW50ZXJmYWNlX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY3OC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njc5OiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjgwLSAqIEBwb3J0OiB0aGUgcG9ydCB3aXRoIGFuIGV4dGVybmFsIGludGVyZmFjZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg0LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cdTAwM2UgeyBpZCwgc3VwcG9ydGVkX2ludGVyZmFjZXMgfS4gVG8gYmUgZW1iZWRkZWRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg1OiAqIGluIFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODYtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY4NzpzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4OC1cdGludCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjkzLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2OTQ6ICogc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gLSBzdGF0aWMgY2hpcC1zcGVjaWZpYyBpbmZvXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5NS0gKiBAbmFtZTogaHVtYW4tcmVhZGFibGUgY2hpcCBuYW1lXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDMtICogYnkgdGhpcyBkcml2ZXIuIFdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIGFub3RoZXIgY2hpcCBpbiB0aGUgZmFtaWx5LCBhIG5ld1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDQ6ICogY2hpcCBpbmZvIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgcnRsODM2NW1iX2NoaXBfaW5mb3MgYXJyYXkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzA2OnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA3LVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwOS1cdHUzMiBjaGlwX3ZlcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEwOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgZXh0aW50c1tSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzExOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5ICpqYW1fdGFibGU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxMi1cdHNpemVfdCBqYW1fc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxNi0jZGVmaW5lIFBIWV9JTlRGKF9tb2RlKSAoUlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV8gIyMgX21vZGUpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE4LVx0e1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI1LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MjY6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mjc6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyOC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MzctXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjczODpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjczOTpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzQwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1MS1cdFx0fSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzUyOlx0XHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzUzOlx0XHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY0LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NjU6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NjY6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2Ny1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3MDplbnVtIHJ0bDgzNjVtYl9zdHBfc3RhdGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzEtXHRSVEw4MzY1TUJfU1RQX1NUQVRFX0RJU0FCTEVEID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Nzc3OmVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzgtXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzgyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODM6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg0LVx0UlRMODM2NU1CX0NQVV9QT1NfQUZURVJfU0EgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODg6ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4OS1cdFJUTDgzNjVNQl9DUFVfRk9STUFUXzhCWVRFUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5MzplbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzk4LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTk6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgwMC0gKiBAZW5hYmxlOiBlbmFibGUvZGlzYWJsZSBoYXJkd2FyZSBpbnNlcnRpb24gb2YgQ1BVIHRhZyBpbiBzd2l0Y2gtXHUwMDNlQ1BVIGZyYW1lc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODEwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTE6c3RydWN0IHJ0bDgzNjVtYl9jcHUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTItXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNC1cdHUzMiB0cmFwX3BvcnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNTpcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTY6XHRlbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24gcG9zaXRpb247XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNzpcdGVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiByeF9sZW5ndGg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxODpcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTktfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMS0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODIyOiAqIHN0cnVjdCBydGw4MzY1bWJfcG9ydCAtIHByaXZhdGUgcGVyLXBvcnQgZGF0YVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjMtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNC0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MjU6ICogQHN0YXRzOiBsaW5rIHN0YXRpc3RpY3MgcG9wdWxhdGVkIGJ5IHJ0bDgzNjVtYl9zdGF0c19wb2xsLCByZWFkeSBmb3IgYXRvbWljXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNjogKiAgICAgICAgIGFjY2VzcyB2aWEgcnRsODM2NW1iX2dldF9zdGF0czY0XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNy0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI5LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzA6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODMxLVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgzOC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODM5OiAqIHN0cnVjdCBydGw4MzY1bWIgLSBkcml2ZXIgcHJpdmF0ZSBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0MC0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1MS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODUyOnN0cnVjdCBydGw4MzY1bWIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTMtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTQtXHRpbnQgaXJxO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTU6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTY6XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSBjcHU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1Ny1cdHN0cnVjdCBtdXRleCBtaWJfbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU4Olx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU5LVx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2Mi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODYzOiNkZWZpbmUgcGNzX3RvX3J0bDgzNjVtYihfcGNzKSBjb250YWluZXJfb2YoKF9wY3MpLCBzdHJ1Y3QgcnRsODM2NW1iLCBwY3MpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODY1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9wb2xsX2J1c3koc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg3My1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODc0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzUtXHRcdFx0XHQgICAgIHUzMiBvY3BfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTA0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcmVhZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDUtXHRcdFx0XHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTExLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkxNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE2Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShwcml2LCBwaHksIG9jcF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkyOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMwOlx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk0ODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0OS1cdFx0XHRcdCAgIHUzMiBvY3BfYWRkciwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1NjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NjA6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NjEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTc5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5ODA6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTgxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTkwOnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA0Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAxODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cdFx0XHQgICAgICAgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMzI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDMzLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ3OnJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNDgte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ5Olx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVx1MDAzZWNoaXBfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1MC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNTM6XHRcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDU0LVx0XHRcdFx1MDAyNm1iLVx1MDAzZWNoaXBfaW5mby1cdTAwM2VleHRpbnRzW2ldO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MTA2Nj1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNjc6cnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA2OC1cdFx0XHQgICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXApXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDcwLVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzE6XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSAqY3B1O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDcyOlx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDgzOnN0YXRpYyBpbnQgcnRsODM2NW1iX2V4dF9jb25maWdfcmdtaWkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODQtXHRcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDg1LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4NjpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDg3Olx0XHRydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDg4LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXHUwMDI2cHJpdi1cdTAwM2Vkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTUtXHQgKiBmb3JjaW5nIHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaW50byBhIHBhcnRpY3VsYXIgbW9kZSwgd2hpY2ggaXMgZG9uZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE2Olx0ICogaW4gdGhlIHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3t1cCxkb3dufSBmdW5jdGlvbnMuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTctXHQgKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE2NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE2NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExODUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExODY6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE4Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI3LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjI4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyOS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMzA6XHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHByaXYtXHUwMDNlY2hpcF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjMxOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIzMi1cdHUzMiBvcHRpb247XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjczLSAqIHRoZWlyIG1heGltdW0gaW4gaXRzIHN3aXRjaCBpbml0LCB1bmNvbmRpdGlvbmFsbHkgZm9yIHRoZSB3aG9sZSBjaGlwXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyNzQ6ICogZmFtaWx5LiBUaGUgY2hpcCByZXNldCBpbiBydGw4MzY1bWJfc2V0dXAoKSBwdXRzIHRoZW0gYmFjayB0byB0aGVpciByZXNldFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjc1LSAqIGRlZmF1bHQgb2YgMHgxRkZGRiwgYSB+MS4wNDggR2JwcyBsaW1pdCB3aGljaCBjYXBzIHRoZSBhZ2dyZWdhdGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODItICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyODM6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMwOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMwOTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTAtXHRcdFx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxMy17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMTQ6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKnNkc19qYW07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTUtXHRjb25zdCBpbnQgaWQgPSBSVEw4MzY1TUJfU0RTX0VYVF9JTlRFUkZBQ0VfSUQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMTY6XHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHBjc190b19ydGw4MzY1bWIocGNzKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxNy1cdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzI2LVx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjc6XHRcdHNkc19qYW0gPSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjg6XHRcdHNkc19qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX3Nkc19qYW1faHNnbWlpKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMyOS1cdFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX0hTR01JSTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMzE6XHRcdHNkc19qYW0gPSBydGw4MzY1bWJfc2RzX2phbV9zZ21paTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMjpcdFx0c2RzX2phbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfc2RzX2phbV9zZ21paSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzMtXHRcdG1vZGUgPSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9TR01JSTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNjMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzZHNfamFtX3NpemU7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzNjQ6XHRcdHJldCA9IHJ0bDgzNjVtYl9zZHNfd3JpdGUocHJpdiwgc2RzX2phbVtpXS5yZWcsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNjUtXHRcdFx0XHRcdCAgc2RzX2phbVtpXS52YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5MC1cdCAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzkxOlx0cmV0ID0gcnRsODM2NW1iX3Nkc193cml0ZShwcml2LCBSVEw4MzY1TUJfU0RTX1JFR19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5Mi1cdFx0XHRcdCAgUlRMODM2NU1CX1NEU19SRVNFVF9ERUFTU0VSVCk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzE1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcnRsODM2NW1iX21haW4uY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBjb2RlIHN1cnJvdW5kaW5nIHRoZSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGFuZCBgcnRsODM2NW1iX3Byb2JlYCBmdW5jdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNoaXAgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHNlcXVlbmNlcyBhcmUgaGFuZGxlZCBpbiB0aGlzIGRyaXZlci4gSSYjMzk7bSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZywgdGhhdCBgcnRsODM2NW1iX3Byb2JlYCBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZWN0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCB3aGljaCB3b3VsZCBsaWtlbHkgbWVhbiBhbGxvY2F0aW5nIHJlc291cmNlcywgY29uZmlndXJpbmcgdGhlIEkvTywgYW5kIHByb2JhYmx5IGNhbGxpbmcgc29tZSBraW5kIG9mIGxvdy1sZXZlbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLiBBbmQgdGhhdCByb3V0aW5lIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgYmUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgSG93IGlzIHRoZSBjaGlwIGFjdHVhbGx5IGRldGVjdGVkPyBJcyBpdCBJMkMsIFNQSSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/CiogICBXaGF0IGNoZWNrcyBhcmUgcGVyZm9ybWVkIGR1cmluZyBwcm9iaW5nIHRvIGVuc3VyZSB0aGUgY2hpcCBpcyBhIHZhbGlkIFJUTDgzNjVNQj8gVmVuZG9yIElELCBEZXZpY2UgSUQsIGV0Yy4KKiAgIEFyZSB0aGVyZSBhbnkgY3JpdGljYWwgcmVnaXN0ZXIgYWNjZXNzZXMgdGhhdCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2hpcCBpcyBhY2Nlc3NpYmxlPwoqICAgV2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIHJlcXVlc3RlZC9hbGxvY2F0ZWQgZHVyaW5nIHByb2JlLCBsaWtlIG1lbW9yeSByZWdpb25zLCBJUlFzLCBldGM/CiogICBIb3cgZG9lcyB0aGUgcmVzZXQgZnVuY3Rpb24gd29yaz8gSXMgaXQgYSBoYXJkIHJlc2V0PyBTb2Z0d2FyZSByZXNldD8gV2hhdCByZWdpc3RlciBtYW5pcHVsYXRpb25zIGFyZSBpbnZvbHZlZD8KKiAgIFdoYXQgZXJyb3IgaGFuZGxpbmcgaXMgaW4gcGxhY2U/IEFyZSB0aGVyZSByZXRyaWVzPyBUaW1lb3V0IG1lY2hhbmlzbXM/CiogICBJIHdhbnQgdG8gc2VlIHRoZSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBleGFjdCBvcmRlciB3aWxsIGJlIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY2hpcCYjMzk7cyBwb3dlci11cCBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KCkkgbmVlZCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcy4gSSBzdXNwZWN0IHRoZSBgcmVzZXRfY2hpcGAgZnVuY3Rpb24gaXMgYSBjb3JlIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGxpa2VseSBhIHNlcmllcyBvZiBkaXJlY3QgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcy4gSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IGVycm9yIGNvZGVzIGFyZSBoYW5kbGVkIGJldHdlZW4gdGhlIHR3byByb3V0aW5lcy4gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBwcmV0dHkgbG93LWxldmVsIHN0dWZmIGhlcmUsIGxpa2VseSBiaXQgbWFuaXB1bGF0aW9uIGFuZCBkaXJlY3QgcmVnaXN0ZXIgYWRkcmVzc2VzLCBob3BlZnVsbHksIGl04oCZcyBub3QgdG9vIG9iZnVzY2F0ZWQuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBjb2RlIGZvbGxvd3MgdGhlIGV4cGVjdGVkIHBhdHRlcm5zIG9yIGlmIHRoZXJlIGFyZSBhbnkgdW51c3VhbCBhcHByb2FjaGVzLiBUaGlzIGlzIHdoZXJlIEkgY2FuIHN0YXJ0IGJ1aWxkaW5nIG15IGh5cG90aGVzaXMgb24gaG93IHRoZSBvdmVyYWxsIHN5c3RlbSB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iX3ZhcmlhbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9MTkzPWV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5NDpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzUwPXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBydGw4MzY1bWJfc3VwcGxpZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNTQ6Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM1NS1cdC5kc19vcHMgPSBcdTAwMjZydGw4MzY1bWJfc3dpdGNoX29wcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNjc6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzY1bWJcJiMzNDssIC5kYXRhID0gXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjgtXHR7IC8qIHNlbnRpbmVsICovIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyNDYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBydGw4MzY1bWIgQ29kZSBVc2FnZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYHJ0bDgzNjVtYl92YXJpYW50YCBhbmQgYHJ0bDgzNjVtYl9vZl9tYXRjaGAuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGVpciB1c2FnZSB3aXRoaW4gdGhlIGRyaXZlci4gTXkgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBydGw4MzY1bWJfbWFpbi5jYCBmaWxlIGFuZCBhbHNvIGxvb2sgZm9yIGFueSBjcm9zcy1yZWZlcmVuY2VzIGluIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIFNNSSBvciBNRElPIGludGVyZmFjZXMgbGlrZSBgcmVhbHRlay1zbWkuY2Agb3IgYHJlYWx0ZWstbWRpby5jYC4gVGhpcyBpcyBteSB1c3VhbCBwcm9jZXNzIHdoZW4gSSBhbSB1bmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbiBvZiBzcGVjaWZpYyB2YXJpYWJsZXMgaW4gdGhlc2UgZHJpdmVycy4gQnkgbG9va2luZyBhdCB3aGVyZSB0aGVzZSBhcmUgZGVjbGFyZWQgYW5kIHdoZXJlIHRoZXkgYXJlIHVzZWQsIEkgY2FuIGdldCBhIGdvb2QgZmVlbCBmb3IgdGhlaXIgcHVycG9zZSB3aXRoaW4gdGhlIFJlYWx0ZWsgc3dpdGNoIGRyaXZlciBlY29zeXN0ZW0uIFRpbWUgdG8gZ2V0IHRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzNTA6XHRzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcnRsODM2NW1iX3N1cHBsaWVzW10gPSB7XG4zMzUxOlx0XHRcJiMzNDthdmRkaFwmIzM0OywgXCYjMzQ7YXZkZGxcJiMzNDssIFwmIzM0O2R2ZGRpb1wmIzM0OywgXCYjMzQ7ZHZkZGlvMVwmIzM0OywgXCYjMzQ7ZHZkZGxcJiMzNDssIFwmIzM0O3BsbHZkZGxcJiMzNDssXG4zMzUyOlx0fTtcbjMzNTM6XHRcbjMzNTQ6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xuMzM1NTpcdFx0LmRzX29wcyA9IFx1MDAyNnJ0bDgzNjVtYl9zd2l0Y2hfb3BzLFxuMzM1NjpcdFx0Lm9wcyA9IFx1MDAyNnJ0bDgzNjVtYl9vcHMsXG4zMzU3Olx0XHQucGh5bGlua19tYWNfb3BzID0gXHUwMDI2cnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyxcbjMzNTg6XHRcdC5jbGtfZGVsYXkgPSAxMCxcbjMzNTk6XHRcdC5jbWRfcmVhZCA9IDB4YjksXG4zMzYwOlx0XHQuY21kX3dyaXRlID0gMHhiOCxcbjMzNjE6XHRcdC5jaGlwX2RhdGFfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgzNjVtYiksXG4zMzYyOlx0XHQuc3VwcGxpZXMgPSBydGw4MzY1bWJfc3VwcGxpZXMsXG4zMzYzOlx0XHQubnVtX3N1cHBsaWVzID0gQVJSQVlfU0laRShydGw4MzY1bWJfc3VwcGxpZXMpLFxuMzM2NDpcdH07XG4zMzY1Olx0XG4zMzY2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG4zMzY3Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzY1bWJcJiMzNDssIC5kYXRhID0gXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXG4zMzY4Olx0XHR7IC8qIHNlbnRpbmVsICovIH1cbjMzNjk6XHR9O1xuMzM3MDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XG4zMzcxOlx0XG4zMzcyOlx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRsODM2NW1iX3NtaV9kcml2ZXIgPSB7XG4zMzczOlx0XHQuZHJpdmVyID0ge1xuMzM3NDpcdFx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1zbWlcJiMzNDssXG4zMzc1Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcbjMzNzY6XHRcdH0sXG4zMzc3Olx0XHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXG4zMzc4Olx0XHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxuMzM3OTpcdFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXG4zMzgwOlx0fTtcbjMzODE6XHRcbjMzODI6XHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcbjMzODM6XHRcdC5tZGlvZHJ2LmRyaXZlciA9IHtcbjMzODQ6XHRcdFx0Lm5hbWUgPSBcJiMzNDtydGw4MzY1bWItbWRpb1wmIzM0OyxcbjMzODU6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuMzM4NjpcdFx0fSxcbjMzODc6XHRcdC5wcm9iZSAgPSByZWFsdGVrX21kaW9fcHJvYmUsXG4zMzg4Olx0XHQucmVtb3ZlID0gcmVhbHRla19tZGlvX3JlbW92ZSxcbjMzODk6XHRcdC5zaHV0ZG93biA9IHJlYWx0ZWtfbWRpb19zaHV0ZG93bixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyOTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBEcml2ZXIgRXhwbG9yYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHNvbWV0aGluZyBpbnRlcmVzdGluZzogd2UmIzM5O3ZlIGdvdCBib3RoIGFuIGBydGw4MzY1bWJfc21pX2RyaXZlcmAgYW5kIGFuIGBydGw4MzY1bWJfbWRpb19kcml2ZXJgLiBCb3RoIGFyZSB1c2luZyBPRiAoRGV2aWNlIFRyZWUpIG1hdGNoaW5nLCB3aGljaCBpcyBnb29kIOKAkyBjbGVhbmVyIGFuZCBtb3JlIGZsZXhpYmxlLiBUaGUgbWF0Y2hpbmcgc3RyaW5ncyBmb3IgYm90aCBhcmUgJiMzNDtyZWFsdGVrLHJ0bDgzNjVtYiYjMzQ7LCB3aGljaCBzdWdnZXN0cyB0aGVzZSBkcml2ZXJzIGFyZSBwcm9iYWJseSBoYW5kbGluZyB0aGUgc2FtZSBoYXJkd2FyZSwganVzdCB0aHJvdWdoIGRpZmZlcmVudCBpbnRlcmZhY2VzLiBUaGUgU01JIGRyaXZlciBsaWtlbHkgaGFuZGxlcyB0aGUgUmVhbHRlayBTcGVjaWZpYyBNYW5hZ2VtZW50IEludGVyZmFjZSAoU01JKSwgYW5kIHRoZSBNRElPIGRyaXZlciB3b3VsZCBkZWFsIHdpdGggdGhlIE1ESU8gaW50ZXJmYWNlIG9mIHRoZSBjaGlwLgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhleSBob29rIHVwIGFuZCBpbml0aWFsaXplLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzZXQgc2VxdWVuY2UsIGhvdyB0aGUgY2hpcCBnZXRzIGNvbmZpZ3VyZWQsIGFuZCB3aGVyZSB0aGlzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCBmdW5jdGlvbiBjb21lcyBpbnRvIHBsYXkuIFRpbWUgdG8gdHJhY2sgZG93biBhbGwgY2FsbHMgdG8gYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCB0byBzZWUgd2hlbiBhbmQgaG93IGl0JiMzOTtzIHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZHJpdmVyIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iX3Jlc2V0X2NoaXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI5NTQ9c3RhdGljIGludCBydGw4MzY1bWJfc3dpdGNoX2luaXQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI5ODQ6c3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMwMTA9c3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzAzMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzAzMTpcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMDMyLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk5NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDY0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSVEw4MzY1TUIgRHJpdmVyJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBgcnRsODM2NW1iX3NldHVwKClgIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3Igc2V0dGluZyB1cCB0aGUgUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoLCB3aGljaCBpcyBhIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3dpdGNoLiBEU0Egc3dpdGNoZXMsIGluIGdlbmVyYWwsIGNvbm5lY3QgdG8gdGhlIE1ESU8gYnVzIG9yIHVzZSBTTUkgKFNlcmlhbCBNYW5hZ2VtZW50IEludGVyZmFjZSwgd2hpY2ggY2FuIGJlIHBsYXRmb3JtLXNwZWNpZmljIG9yIEdQSU8tYml0YmFuZ2VkKS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBSZWFsdGVrIGNoaXAgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgZXNwZWNpYWxseSBvbiBhbiBhbWQ2NCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSB0YXJnZXRpbmcuCgpMZXQmIzM5O3MgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSByZWFzb25zIGEgdGFyZ2V0IG1pZ2h0IGJlIHVuc3VpdGFibGUgZm9yIGZ1enppbmcsIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBzY2VuYXJpb3MuICBJdCBsaXN0czoKCjEuICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToqKiBUaGluayB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgcmVxdWlyZSBhIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkLCBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCjIuICAqKlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoqKiAgVGhpcyBpbmNsdWRlcyBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgYW5kIHRoaW5ncyBsaWtlIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgb25seSBnZXQgZXhlY3V0ZWQgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnZ2luZyBvciBkcml2ZXIgdW5iaW5kaW5nIHZpYSBzeXNmcy4gQWxzbyBjb2RlIHBhdGhzIHRoYXQgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4KClNvLCB0aGUga2V5IGlzIHdoZXRoZXIgdGhlIERTQSBkcml2ZXIgKm9yKiB0aGUgUlRMODM2NU1CLCBzcGVjaWZpY2FsbHksIGNhbiBldmVuIGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gYSBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudCBvbiBhbWQ2NC4gIEkgc2VlIGEgYHJ0bDgzNjVtYl9vZl9tYXRjaGAgd2l0aCBhIGAuY29tcGF0aWJsZSA9ICYjMzQ7cmVhbHRlayxydGw4MzY1bWImIzM0O2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHByb2JlZCBiYXNlZCBvbiB0aGUgRGV2aWNlIFRyZWUuIE1ESU8gZHJpdmVycyB1c3VhbGx5IHJlbHkgb24gYG1kaW9fZHJpdmVyX3JlZ2lzdGVyYCBvciBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUuCgpUaGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyBzeXprYWxsZXIsIG9yIGNhbiBzeXprYWxsZXIsIGNyZWF0ZSBvciBlbXVsYXRlIFJlYWx0ZWsgU01JIG9yIE1ESU8gZGV2aWNlcz8gIEkmIzM5O20gZ3Vlc3NpbmcgdGhlIGFuc3dlciBpcyBuby4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgRFNBIGRyaXZlcnMgZm9yIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgaW5jbHVkaW5nIFJUTDgzNjVNQiwgQjUzLCBNVjg4RTZ4eHgsIFNKQTExMDUsIGV0Yy4sIG5lZWQgKnBoeXNpY2FsKiBzd2l0Y2ggSUMgaGFyZHdhcmUgb3IgcGxhdGZvcm0gZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBEZXZpY2VUcmVlLCB3aGljaCBhcmUgY29ubmVjdGVkIHRvICpyZWFsKiBNRElPL1NNSSBidXNlcy4KCldhaXQgYSBzZWNvbmQsIGlzIHRoZXJlICphbnkqIHdheSB0byBlbXVsYXRlIGEgRFNBIHN3aXRjaD8gQWghIGBkc2FfbG9vcGAgaW4gYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYCAtIHRoYXQmIzM5O3MgYSAqbW9jayogRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRlc3RpbmcuICBIb3dldmVyLCBhbGwgdGhlICpvdGhlciogRFNBIGRyaXZlcnMgKFJlYWx0ZWssIFNKQTExMDUsIE1pY3JvY2hpcCwgQjUzLCBldGMuKSBhcmUgKmhhcmR3YXJlKiBzd2l0Y2ggZHJpdmVycywgYnVpbHQgZm9yIHRob3NlIHNwZWNpZmljIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MuIFRoZSBSVEw4MzY1TUIsIHNwZWNpZmljYWxseSwgaXMgYSBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCwgbGlrZWx5IHNvbWV0aGluZyBsaWtlIHRoZSBSVEw4MzY1TUItVkMgb3IgUlRMODM2N1MuCgpPa2F5LCBsZXQgbWUgY2hlY2sgdGhlIHByb2JlIG1lY2hhbmlzbSBpbiBgcmVhbHRlay1zbWkuY2AgYW5kIGByZWFsdGVrLW1kaW8uY2AgdG8gYmUgc3VyZS4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGlzIGlzIHByb2JhYmx5IGEgZGVhZCBlbmQgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBwcm9iZSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAmIzQzO1xuICAgMjpcdC8qIFJlYWx0ZWsgU2ltcGxlIE1hbmFnZW1lbnQgSW50ZXJmYWNlIChTTUkpIGRyaXZlclxuICAgMzpcdCAqIEl0IGNhbiBiZSBkaXNjdXNzZWQgaG93IFwmIzM0O3NpbXBsZVwmIzM0OyB0aGlzIGludGVyZmFjZSBpcy5cbiAgIDQ6XHQgKlxuICAgNTpcdCAqIFRoZSBTTUkgcHJvdG9jb2wgcGlnZ3ktYmFja3MgdGhlIE1ESU8gTURDIGFuZCBNRElPIHNpZ25hbHMgbGV2ZWxzXG4gICA2Olx0ICogYnV0IHRoZSBwcm90b2NvbCBpcyBub3QgTURJTyBhdCBhbGwuIEluc3RlYWQgaXQgaXMgYSBSZWFsdGVrXG4gICA3Olx0ICogcGVjdWxhcml0eSB0aGF0IG5lZWQgdG8gYml0LWJhbmcgdGhlIGxpbmVzIGluIGEgc3BlY2lhbCB3YXkgdG9cbiAgIDg6XHQgKiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzd2l0Y2guXG4gICA5Olx0ICpcbiAgMTA6XHQgKiBBU0lDcyB3ZSBpbnRlbmQgdG8gc3VwcG9ydCB3aXRoIHRoaXMgZHJpdmVyOlxuICAxMTpcdCAqXG4gIDEyOlx0ICogUlRMODM2NiAgIC0gVGhlIG9yaWdpbmFsIHZlcnNpb24sIGFwcGFyZW50bHlcbiAgMTM6XHQgKiBSVEw4MzY5ICAgLSBTaW1pbGFyIGVub3VnaCB0byBoYXZlIHRoZSBzYW1lIGRhdHNoZWV0IGFzIFJUTDgzNjZcbiAgMTQ6XHQgKiBSVEw4MzY2UkIgLSBQcm9iYWJseSByZWFkcyBvdXQgXCYjMzQ7UlRMODM2NiByZXZpc2lvbiBCXCYjMzQ7LCBoYXMgYSBxdWl0ZVxuICAxNTpcdCAqICAgICAgICAgICAgIGRpZmZlcmVudCByZWdpc3RlciBsYXlvdXQgZnJvbSB0aGUgb3RoZXIgdHdvXG4gIDE2Olx0ICogUlRMODM2NlMgIC0gSXMgdGhpcyBcJiMzNDtSVEw4MzY2IHN1cGVyXCYjMzQ7P1xuICAxNzpcdCAqIFJUTDgzNjcgICAtIEhhcyBhbiBPcGVuV1JUIGRyaXZlciBhcyB3ZWxsXG4gIDE4Olx0ICogUlRMODM2OFMgIC0gU2VlbXMgdG8gYmUgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgUlRMODM2NlJCXG4gIDE5Olx0ICogUlRMODM3MCAgIC0gQWxzbyB1c2VzIFNNSVxuICAyMDpcdCAqXG4gIDIxOlx0ICogQ29weXJpZ2h0IChDKSAyMDE3IExpbnVzIFdhbGxlaWogXHUwMDNjbGludXMud2FsbGVpakBsaW5hcm8ub3JnXHUwMDNlXG4gIDIyOlx0ICogQ29weXJpZ2h0IChDKSAyMDEwIEFudHRpIFNlcHDDpGzDpCBcdTAwM2NhLnNlcHBhbGFAZ21haWwuY29tXHUwMDNlXG4gIDIzOlx0ICogQ29weXJpZ2h0IChDKSAyMDEwIFJvbWFuIFllcnlvbWluIFx1MDAzY3JvbWFuQGFkdmVtLmx2XHUwMDNlXG4gIDI0Olx0ICogQ29weXJpZ2h0IChDKSAyMDExIENvbGluIExlaXRuZXIgXHUwMDNjY29saW4ubGVpdG5lckBnb29nbGVtYWlsLmNvbVx1MDAzZVxuICAyNTpcdCAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIEdhYm9yIEp1aG9zIFx1MDAzY2p1aG9zZ0BvcGVud3J0Lm9yZ1x1MDAzZVxuICAyNjpcdCAqL1xuICAyNzpcdFxuICAyODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDI5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMzA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuICAzMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2VcbiAgMzI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuICAzMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAgMzQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gIDM1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gIDM2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAgMzc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAzODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gIDM5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcdTAwM2VcbiAgNDA6XHRcbiAgNDE6XHQjaW5jbHVkZSBcJiMzNDtyZWFsdGVrLmhcJiMzNDtcbiAgNDI6XHQjaW5jbHVkZSBcJiMzNDtyZWFsdGVrLXNtaS5oXCYjMzQ7XG4gIDQzOlx0I2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG4gIDQ0Olx0XG4gIDQ1Olx0I2RlZmluZSBSRUFMVEVLX1NNSV9BQ0tfUkVUUllfQ09VTlRcdFx0NVxuICA0NjpcdFxuICA0NzpcdHN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiAgNDg6XHR7XG4gIDQ5Olx0XHRuZGVsYXkocHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWNsa19kZWxheSk7XG4gIDUwOlx0fVxuICA1MTpcdFxuICA1MjpcdHN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0YXJ0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gIDUzOlx0e1xuICA1NDpcdFx0LyogU2V0IEdQSU8gcGlucyB0byBvdXRwdXQgbW9kZSwgd2l0aCBpbml0aWFsIHN0YXRlOlxuICA1NTpcdFx0ICogU0NLID0gMCwgU0RBID0gMVxuICA1NjpcdFx0ICovXG4gIDU3Olx0XHRncGlvZF9kaXJlY3Rpb25fb3V0cHV0KHByaXYtXHUwMDNlbWRjLCAwKTtcbiAgNTg6XHRcdGdwaW9kX2RpcmVjdGlvbl9vdXRwdXQocHJpdi1cdTAwM2VtZGlvLCAxKTtcbiAgNTk6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbiAgNjA6XHRcbiAgNjE6XHRcdC8qIENMSyAxOiAwIC1cdTAwM2UgMSwgMSAtXHUwMDNlIDAgKi9cbiAgNjI6XHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG4gIDYzOlx0XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG4gIDY0Olx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDApO1xuICA2NTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuICA2NjpcdFxuICA2NzpcdFx0LyogQ0xLIDI6ICovXG4gIDY4Olx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuICA2OTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuICA3MDpcdFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMCk7XG4gIDcxOlx0XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG4gIDcyOlx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDApO1xuICA3MzpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuICA3NDpcdFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMSk7XG4gIDc1Olx0fVxuICA3NjpcdFxuICA3NzpcdHN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiAgNzg6XHR7XG4gIDc5Olx0XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG4gIDgwOlx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3ODMKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogNTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoZSBSVEw4MzY1TUIgRHJpdmVyIGlzIE5vdCBGdXp6YWJsZSBpbiBTdGFuZGFyZCBFbnZpcm9ubWVudHMqKgoKT2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBSZWFsdGVrIHN3aXRjaCBkcml2ZXIsIGBydGw4MzY1bWJfbWFpbi5jYCwgaXMgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4KCkZpcnN0LCBJIHNlZSB0aGF0IHRoZSBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggYSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDLiBJdCB1c2VzIGVpdGhlciB0aGUgcHJvcHJpZXRhcnkgU01JIHByb3RvY29sIChiaXQtYmFuZ2VkIEdQSU8gbGluZXMsIE1EQy9NRElPKSBvciB0aGUgc3RhbmRhcmQgTURJTyBidXMuIEJvdGggY29tbXVuaWNhdGlvbiBtZXRob2RzIHJlbHkgb24gT0YgKERldmljZSBUcmVlKSBiaW5kaW5ncywgd2hpY2ggaXMgdHlwaWNhbCBmb3IgZW1iZWRkZWQgc3lzdGVtcyBsaWtlIEFSTS9NSVBTIHJvdXRlcnMgd2hlcmUgdGhlc2Ugc3dpdGNoZXMgYXJlIGNvbW1vbmx5IHVzZWQuIFRoYXQgYWxvbmUgaXMgYSByZWQgZmxhZywgYXMgSSBrbm93IG91ciBmdXp6aW5nIGhlYXZpbHkgcmVsaWVzIG9uIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkkga25vdyB0aGF0IGFtZDY0IHN5c3RlbXMsIGFuZCBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsIG1hY2hpbmVzLCBkb24mIzM5O3QgaGF2ZSBhIERldmljZSBUcmVlIGJpbmRpbmcgb3IgYSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDIHRvIHRhbGsgdG8uIEV2ZW4gKmlmKiBJIGNvdWxkIGZvcmNlIGBDT05GSUdfT0ZgIHRvIGJlIGNvbXBpbGVkIG9uIGFtZDY0LCB0aGVyZSBpc24mIzM5O3QgYSB2aXJ0dWFsIGRldmljZSBvciBhIG1vY2sgZHJpdmVyIHRvIGluc3RhbnRpYXRlIG9yIGVtdWxhdGUgdGhpcyBzd2l0Y2guIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgZGVhZCBlbmQuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoaXMgdXNpbmcgdGhlIHRyaWFnZSBndWlkZWxpbmVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9sbG93aW5nIHRoZSBydWxlcyBoZXJlLgoKSSBnbyBiYWNrIHRvIHRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcy4gVGhlIHByaW1hcnkgZ2F0ZSBpcyByZWFjaGFiaWxpdHkuIFRoZSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBmdXp6aW5nIGlzIG9ubHkgYXBwcm9wcmlhdGUgZm9yIGNvZGUgdGhhdCBjYW4gKmV4ZWN1dGUqIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQ29kZSB0aGF0JiMzOTtzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBnZXRzIGEgaGFyZCBwYXNzLiBGdXJ0aGVybW9yZSwgdGhlIGd1aWRlbGluZXMgbGlzdCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhcyBleGFtcGxlcyBvZiB1bnJlYWNoYWJsZSBjb2RlLiBTb3VuZHMgZmFtaWxpYXIuLi4KClRoZSBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlciAqYWJzb2x1dGVseSogZml0cyB0aGlzIGRlc2NyaXB0aW9uLiBJdCYjMzk7cyBmb3IgYSBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggQVNJQyAoUmVhbHRlayBSVEw4MzY1TUIvUlRMODM2N1MpLCBjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPLCBhcyBkZXNjcmliZWQgaW4gdGhlIERldmljZSBUcmVlLCBhbmQgbm9uZSBvZiB0aGlzIGV4aXN0cyBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50LiBJdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLgoKVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuCgpIZXJlJiMzOTtzIGEgY2xlYXIgc3RydWN0dXJlIGZvciB0aGUgcmVzcG9uc2U6CgoxLiAgKipXb3J0aEZ1enppbmc6KiogYGZhbHNlYAoyLiAgKipGb2N1c1N5bWJvbHM6KiogYFtdYCAoTm90aGluZyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QpCjMuICAqKkVuYWJsZUNvbmZpZ3M6KiogYFtdYCAoTm8gc3BlY2lmaWMgY29uZmlncyBuZWVkZWQpCjQuICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggdG91Y2hlcyBgcnRsODM2NW1iX3Jlc2V0X2NoaXAoKWAgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgZHJpdmVyIGZvciBSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBBU0lDcyAoUlRMODM2NU1CL1JUTDgzNjdTKSB0aGF0IGFyZSBjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPIGJ1cy4gVGhpcyBzZXR1cCByZWxpZXMgb24gRGV2aWNlIFRyZWUtYmFzZWQgZW1iZWRkZWQgc3lzdGVtcyBhbmQgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIG9uIGFtZDY0LiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgZHVlIHRvIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjaGlwIHJlc2V0IGxvZ2ljIGFuZCB0aW1pbmcgaW4gcnRsODM2NW1iX3Jlc2V0X2NoaXAoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDcyBhdHRhY2hlZCB2aWEgU01JIG9yIE1ESU8gYnVzZXMgZGVmaW5lZCB2aWEgRGV2aWNlIFRyZWUgKE9GKSwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjaGlwIHJlc2V0IGxvZ2ljIGFuZCB0aW1pbmcgaW4gcnRsODM2NW1iX3Jlc2V0X2NoaXAoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDcyBhdHRhY2hlZCB2aWEgU01JIG9yIE1ESU8gYnVzZXMgZGVmaW5lZCB2aWEgRGV2aWNlIFRyZWUgKE9GKSwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzEuNjI1NjY1MjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYxOTAzMzQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjMxLjYyNTY3MDQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM2NTY1MTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTQxNGMxNTU0MTRkYzMwZmFjNTYyZTQyYTY4MTUyYzY0ZGZmM2FhM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDEyOjU2OjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXFxuaW5kZXggZjgyMjBkODMyZTQ2MC4uMTllMmNmNjA1ZDRlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbkBAIC0xMzYsNiArMTM2LDkgQEBcXG4gI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9TV19NQVNLXFx0MHgwMDAyXFxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1xcdDB4MDAwMVxcbiBcXG4rLyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovXFxuKyNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfVElNRV9NU1xcdDEwMDBcXG4rXFxuIC8qIEludGVycnVwdCBwb2xhcml0eSByZWdpc3RlciAqL1xcbiAjZGVmaW5lIFJUTDgzNjVNQl9JTlRSX1BPTEFSSVRZX1JFR1xcdDB4MTEwMFxcbiAjZGVmaW5lICAgUlRMODM2NU1CX0lOVFJfUE9MQVJJVFlfTUFTS1xcdDB4MDAwMVxcbkBAIC0yOTgxLDE3ICsyOTg0LDI3IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4ge1xcbiBcXHR1MzIgdmFsO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNld3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRyxcXG4gXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLLCAxKSk7XFxuIFxcbi1cXHQvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXBcXG4tXFx0ICogZm9yIDEwMCBtcyBiZWZvcmUgYWNjZXNzaW5nIGFueSByZWdpc3RlcnMgdG8gcHJldmVudCBBQ0sgdGltZW91dHMuXFxuK1xcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGVcXG4rXFx0ICogcmVzZXQgYml0IGNsZWFycyBiZWZvcmUgdGhhdCB0aW1lIGlzIHVwLCBhbmQgaXQgb25seSByZXBvcnRzIHRoYXRcXG4rXFx0ICogdGhlIHJlZ2lzdGVyIGJsb2NrIGlzIGJhY2ssIG5vdCB0aGF0IHRoZSBjaGlwIGhhcyBmaW5pc2hlZCBpdHNcXG4rXFx0ICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nXFxuK1xcdCAqIGFueXRoaW5nLlxcbiBcXHQgKi9cXG4tXFx0bXNsZWVwKDEwMCk7XFxuLVxcdHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCxcXG4tXFx0XFx0XFx0XFx0XFx0ISh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcXG4tXFx0XFx0XFx0XFx0XFx0MjAwMDAsIDFlNik7XFxuK1xcdG1zbGVlcChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcXG4rXFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXFx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCBcXHUwMDI2dmFsKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdGlmICh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKVxcbitcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjMyLjk2Mjk0MzkzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDYyODE3NDIxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTQxNGMxNTU0MTRkYzMwZmFjNTYyZTQyYTY4MTUyYzY0ZGZmM2FhM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTI6NTY6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggZjgyMjBkODMyZTQ2MC4uMTllMmNmNjA1ZDRlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMzYsNiArMTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4rLyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovXG4rI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TXHQxMDAwXG4rXG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgxLDE3ICsyOTg0LDI3IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gc3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIHtcbiBcdHUzMiB2YWw7XG4rXHRpbnQgcmV0O1xuIFxuIFx0cHJpdi1cdTAwM2V3cml0ZV9yZWdfbm9hY2socHJpdiwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLFxuIFx0XHRcdCAgICAgIEZJRUxEX1BSRVAoUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSywgMSkpO1xuIFxuLVx0LyogUmVhbHRlayBkb2N1bWVudGF0aW9uIHNheXMgdGhlIGNoaXAgbmVlZHMgMSBzZWNvbmQgdG8gcmVzZXQuIFNsZWVwXG4tXHQgKiBmb3IgMTAwIG1zIGJlZm9yZSBhY2Nlc3NpbmcgYW55IHJlZ2lzdGVycyB0byBwcmV2ZW50IEFDSyB0aW1lb3V0cy5cbitcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGVcbitcdCAqIHJlc2V0IGJpdCBjbGVhcnMgYmVmb3JlIHRoYXQgdGltZSBpcyB1cCwgYW5kIGl0IG9ubHkgcmVwb3J0cyB0aGF0XG4rXHQgKiB0aGUgcmVnaXN0ZXIgYmxvY2sgaXMgYmFjaywgbm90IHRoYXQgdGhlIGNoaXAgaGFzIGZpbmlzaGVkIGl0c1xuK1x0ICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nXG4rXHQgKiBhbnl0aGluZy5cbiBcdCAqL1xuLVx0bXNsZWVwKDEwMCk7XG4tXHRyZXR1cm4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCxcbi1cdFx0XHRcdFx0ISh2YWwgXHUwMDI2IFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0spLFxuLVx0XHRcdFx0XHQyMDAwMCwgMWU2KTtcbitcdG1zbGVlcChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcbitcbitcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIFx1MDAyNnZhbCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0aWYgKHZhbCBcdTAwMjYgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSylcbitcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzIuOTYyOTQ2MzIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDcxNzAyNjYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWFsdGVrIFJUTDgzNjVNQiBEU0EgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGludm9sdmVzIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiwgYW5kIHRoYXQgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSBEYXRhIFN3aXRjaGluZyBBcmNoaXRlY3R1cmUgKERTQSkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIHZlcmlmeSB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIEFoLCBpdCdzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCBpbiB0aGF0IHNhbWUgZmlsZS4gVGhpcyBkcml2ZXIgbXVzdCBoYW5kbGUgdGhlIHJlc2V0IGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIHByZXR0eSBmdW5kYW1lbnRhbC5cblxuTm93LCBpdCdzIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBkcml2ZXIuIElzIGl0IGZvciBhIGNvbW1vbmx5IHVzZWQgc3dpdGNoPyBPciBpcyBpdCBwYXJ0IG9mIHNvbWUgbW9yZSBzcGVjaWFsaXplZCBoYXJkd2FyZT8gR2l2ZW4gdGhhdCBpdCdzIGEgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoZSBSVEw4MzY1TUIsIEkgaGF2ZSBhIHByZXR0eSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gSXMgdGhpcyBjb2RlIGFjdGl2ZWx5IHVzZWQsIG9yIGlzIGl0IHBvdGVudGlhbGx5IGRlYWQgY29kZT9cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJ2xsIHN0YXJ0IGJ5IGdyZXBwaW5nIHRoZSBjb2RlIGZvciB1c2FnZSBhbmQgY29uZmlndXJhdGlvbnMsIGFuZCByZWFkIHRoZSByZWxldmFudCBmaWxlcyDigJMgS2NvbmZpZywgcHJvYmFibHkuIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBhbmQgc2VlIHdoZXJlIHRoaXMgZHJpdmVyIGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzcuNjc5OTc1OTE2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTkzNjM0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfUkVBTFRFS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc9MTY9aWYgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjE4OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTktXFx0Ym9vbCBcXFwiUmVhbHRlayBNRElPIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI1OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozMjpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODM2NU1CIHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6Mzk6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ2OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQ3LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzkuMjc5MzQ3ODg2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQwMzM0NDk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBLY29uZmlnIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgRFNBIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyDigJMgb3IgYXQgbGVhc3QsIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBSZWFsdGVrIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBiZWluZyBjb250cm9sbGVkIGhlcmUsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHVzLCBhbmQgaG93IHdlIGNhbiBiZXN0IGxldmVyYWdlIHRoZW0gZm9yIHNwZWNpZmljIHVzZSBjYXNlcy4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yOlxuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBvcHRpb25zIGRvZXMgdGhpcyBkZXBlbmQgb24/IEFyZSB0aGVyZSBzcGVjaWZpYyBuZXR3b3JrIHN1YnN5c3RlbXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgaXQgcmVxdWlyZXM/IElkZW50aWZ5aW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIHNtb290aCBpbnRlZ3JhdGlvbiBhbmQgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgY29uZmxpY3RzLlxuKiAgICoqRmVhdHVyZSBDb250cm9sOioqIFdoYXQgc3BlY2lmaWMgUmVhbHRlayBzd2l0Y2ggZmVhdHVyZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGlzIEtjb25maWcgZmlsZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYmFzaWMgdGhpbmdzIGxpa2UgcG9ydCBjb25maWd1cmF0aW9uIChzcGVlZCwgZHVwbGV4KSwgVkxBTiBzdXBwb3J0LCBRb1MgY2FwYWJpbGl0aWVzLCBvciBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgdHJhZmZpYyBzaGFwaW5nIGFuZCBtaXJyb3Jpbmc/IFRoZSBncmFudWxhcml0eSBvZiBjb250cm9sIGlzIGtleS5cbiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBlYWNoIG9wdGlvbj8gS25vd2luZyB0aGUgZGVmYXVsdHMgcHJvdmlkZXMgY29udGV4dCwgcGFydGljdWxhcmx5IHdoZW4gaW52ZXN0aWdhdGluZyBwb3RlbnRpYWwgaXNzdWVzIG9yIGN1c3RvbWl6aW5nIHRoZSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgYm9hcmQgb3IgbmV0d29yayBzZXR1cC5cbiogICAqKkhlbHAgVGV4dDoqKiBIb3BlZnVsbHksIHRoZSBLY29uZmlnIGZpbGUgaGFzIGdvb2QsIGRlc2NyaXB0aXZlIGhlbHAgdGV4dC4gVGhpcyBpcyBhIHZpdGFsIHJlc291cmNlIGZvciBhbnlvbmUgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgZWFjaCBvcHRpb24uIENsZWFyIGFuZCBjb25jaXNlIGV4cGxhbmF0aW9ucyBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIGd1ZXNzd29yay5cbiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGBpZmAgc3RhdGVtZW50cyBvciBvdGhlciBjb25kaXRpb25hbCBsb2dpYy4gVGhpcyB3aWxsIHNob3cgaG93IG9wdGlvbnMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gb3RoZXIga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGhhcmR3YXJlIGNvbnN0cmFpbnRzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGRpZmZlcmVudCBSZWFsdGVrIHN3aXRjaCBtb2RlbHMgb3IgZHJpdmVyIHZlcnNpb25zIGFyZSBoYW5kbGVkLlxuKiAgICoqSW50ZWdyYXRpb24gUG9pbnRzOioqIEknbGwgYmUgZ2xhbmNpbmcgZm9yIGFueSByZWZlcmVuY2VzIHRvIG90aGVyIEtjb25maWcgZmlsZXMgb3IgZHJpdmVyIGNvbXBvbmVudHMuIFRoaXMgbWF5IGhlbHAgaW4gaWRlbnRpZnlpbmcgcG90ZW50aWFsIGludGVncmF0aW9uIHBvaW50cywgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbmV0d29yayBzdWJzeXN0ZW1zIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBSZWFsdGVrIGNvbXBvbmVudHMuXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBmb3IgdGhpcyBkcml2ZXIgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay4gVGhlIEtjb25maWcgZmlsZSBpcyB0aGUgcm9hZG1hcC4gTm93LCBsZXQncyBnZXQgcmVhZGluZyBhbmQgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQyLjY4MjY5NTY3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FcXG4gICA1OlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gICA2OlxcdFxcdHNlbGVjdCBJUlFfRE9NQUlOXFxuICAgNzpcXHRcXHRzZWxlY3QgUkVBTFRFS19QSFlcXG4gICA4OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBjaGlwcy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgYXQgbGVhc3Qgb25lIGludGVyZmFjZSBkcml2ZXIgbXVzdCBiZSBlbmFibGVkIGZvciB0aGVcXG4gIDEzOlxcdFxcdCAgc3ViZHJpdmVycyB0byBiZSBsb2FkZWQuIE1vcmVvdmVyLCBhbiBpbnRlcmZhY2UgZHJpdmVyIGNhbm5vdCBhY2hpZXZlXFxuICAxNDpcXHRcXHQgIGFueXRoaW5nIHdpdGhvdXQgYXQgbGVhc3Qgb25lIHN1YmRyaXZlciBlbmFibGVkLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBORVRfRFNBX1JFQUxURUtcXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19NRElPXFxuICAxOTpcXHRcXHRib29sIFxcXCJSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIE9GXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZFxcbiAgMjM6XFx0XFx0ICB0aHJvdWdoIE1ESU8uXFxuICAyNDpcXHRcXG4gIDI1OlxcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXFxuICAyNjpcXHRcXHRib29sIFxcXCJSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gT0ZcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25uZWN0ZWRcXG4gIDMwOlxcdFxcdCAgdGhyb3VnaCBTTUkuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXFxuICAzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDM0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDhfNFxcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CLVZDIGFuZCBSVEw4MzY3Uy5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG4gIDQwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX1JFQUxURUtfU01JIHx8IE5FVF9EU0FfUkVBTFRFS19NRElPXFxuICA0MjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMNF9BXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY2UkIuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG4gIDQ3OlxcdFxcdGJvb2xcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gKExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG4gIDUwOlxcdFxcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxcbiAgNTE6XFx0XFxuICA1MjpcXHRlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjo1Njo0Mi42ODI3NTc4NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODkyODUwMzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFJUTDgzNjVNQiBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcnRsODM2NW1iX21haW4uY2AgZHJpdmVyIGlzIGluaXRpYWxpemVkIGFuZCBwcm9iZWQuIE15IHByaW1hcnkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgaXRzIG9wZXJhdGlvbiBoaW5nZXMgb24gcGFydGljdWxhciBwaHlzaWNhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgcGVyaGFwcyByZXF1aXJpbmcgRGV2aWNlIFRyZWUgKE9GKSwgdGhlIE1ESU8gYnVzLCBvciBldmVuIHRoZSBTTUkgYnVzLiBNeSBpbW1lZGlhdGUgY291cnNlIG9mIGFjdGlvbiBpcyB0byBleHBsb3JlIHRoZSByZWxldmFudCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UncyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ0LjU3NTYxMDYyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJyZWFsdGVrLW1kaW8uY1wiLFxuICAgIFwicmVhbHRlay1tZGlvLmhcIixcbiAgICBcInJlYWx0ZWstc21pLmNcIixcbiAgICBcInJlYWx0ZWstc21pLmhcIixcbiAgICBcInJlYWx0ZWsuaFwiLFxuICAgIFwicnRsODM2NW1iX2wyLmNcIixcbiAgICBcInJ0bDgzNjVtYl9sMi5oXCIsXG4gICAgXCJydGw4MzY1bWJfbWFpbi5jXCIsXG4gICAgXCJydGw4MzY1bWJfdGFibGUuY1wiLFxuICAgIFwicnRsODM2NW1iX3RhYmxlLmhcIixcbiAgICBcInJ0bDgzNjVtYl92bGFuLmNcIixcbiAgICBcInJ0bDgzNjVtYl92bGFuLmhcIixcbiAgICBcInJ0bDgzNjYtY29yZS5jXCIsXG4gICAgXCJydGw4MzY2cmItbGVkcy5jXCIsXG4gICAgXCJydGw4MzY2cmIuY1wiLFxuICAgIFwicnRsODM2NnJiLmhcIixcbiAgICBcInJ0bDgzeHguY1wiLFxuICAgIFwicnRsODN4eC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ0LjU3NTY3NzE5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5MjM2ODg2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFN3aXRjaCBEcml2ZXIgUHJvYmUgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayBkcml2ZXIgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN3aXRjaCBkZXZpY2VzIGFyZSBiZWluZyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgcnRsODM2NW1iX3Byb2JlYCwgYHJlYWx0ZWtfc21pX3Byb2JlYCwgYW5kIGByZWFsdGVrX21kaW9fcHJvYmVgIGZ1bmN0aW9ucy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIGRpZmZlcmVudCBSZWFsdGVrIHN3aXRjaCBjaGlwc2V0cywgb3IgcGVyaGFwcyBkaWZmZXJlbnQgaW50ZXJmYWNlcyBsaWtlIFNNSSBvciBNRElPLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBXaGF0IGNoZWNrcyBhcmUgdGhleSBwZXJmb3JtaW5nPyBXaGF0IHJlc291cmNlcyBhcmUgdGhleSBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmc/IEFyZSB0aGV5IHJlbHlpbmcgb24gcGxhdGZvcm0tc3BlY2lmaWMgZGF0YSwgb3IgYXJlIHRoZXJlIG1vcmUgZ2VuZXJpYyBtZXRob2RzIGF0IHBsYXk/IEknbGwgcHJvYmFibHkgbG9vayBmb3IgdGhlIG1hdGNoaW5nIGByZW1vdmVgIGZ1bmN0aW9ucyBzaG9ydGx5IGFmdGVyIHRoaXMgc28gSSBoYXZlIGEgcGljdHVyZSBvZiB0aGUgbGlmZWN5Y2xlLiBJIGV4cGVjdCB0byBiZSBhYmxlIHRvIG1hcCBhIHBhcnRpY3VsYXIgc3dpdGNoIHRvIGVhY2ggb2YgdGhlc2UsIGJ1dCBJIHdvbmRlciBpZiB0aGVyZSBhcmUgb3ZlcmxhcHBpbmcgZnVuY3Rpb25zLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEFyZSB0aGVyZSBhbnkgY29tbW9uIGVycm9yIGhhbmRsaW5nIHBhdHRlcm5zIHRoYXQgSSBjYW4gbGV2ZXJhZ2UgaW4gbXkgY3VycmVudCBwcm9qZWN0PyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgUmVhbHRlayBzd2l0Y2ggaW50ZXJmYWNlcyBhcmUgZGV0ZWN0ZWQgYW5kIGNvbmZpZ3VyZWQuIExldCdzIHN0YXJ0IHdpdGggdGhlIGZpcnN0IG9uZeKAplxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDgyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ3LjQ5OTM2ODMyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc2NTQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MzY1bWJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjgzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT0xNz1lbmRpZlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSArPSBydGw4MzY1bWIub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE5OnJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIwOlxcdFxcdCAgcnRsODM2NW1iX3RhYmxlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIxOlxcdFxcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XFx0XFx0ICBydGw4MzY1bWJfbDIubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjM6IyBlbmQgb2YgcnRsODM2NW1iLW9ianNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTM9ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5NDpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo5OiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDojaW5jbHVkZSBcXFwicnRsODM2NW1iX3RhYmxlLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkzLVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMDpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkga2V5O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEwMi1cXHR1OCBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTE1LVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEyMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjM6c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWNfa2V5IGtleTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjUtXFx0dTE2IG1lbWJlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjE2NDpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YywgdTE2ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMDItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjAzOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjYyOiAqIHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YygpIC0gZ2V0IHRoZSBuZXh0IFVuaWNhc3QgTDIgZW50cnlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjMtICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODEtICoqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4MjppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4NS1cXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODY6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjkwLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoZGF0YSwgXFx1MDAyNnVjKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMwNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzEwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMjgtXFx0dWMuYWdlID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMxLVxcdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XFx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzMtXFx0XFx0XFx0XFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzQ1OmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0Ni1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjAtXFx0dWMuYWdlID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNjE6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzY4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzY5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzgzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDQ5OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1MC1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTMtXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgbWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTUtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjUtXFx0bWMuaXNfc3RhdGljID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NjY6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY4LVxcdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2OTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc0LVxcdFxcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NzU6XFx0XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXFx1MDAyNm1jKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzYtXFx0XFx0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00ODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDkwOlxcdFxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVxcdH0gZWxzZSBpZiAocmV0ID09IC1FTk9FTlQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTA4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTA5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjEtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyNTpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI2LVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTMxLVxcdG1jLmtleS5pdmwgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcXHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcXHUwMDI2bWMsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzQtXFx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM2LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTUwOlxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFxcdTAwMjZtYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTUxLVxcdGRldl9kYmcocHJpdi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY3LVxcdH1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1Njg6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NjktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcwLVxcdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTcxOlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE2LVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTc6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTktXFx0XFx0XFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjIwOmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIyLVxcdFxcdFxcdHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMzppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyNTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXFx0XFx0XFx0dTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6Mjg6aW50IHJ0bDgzNjVtYl9sMl9kZWxfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjktXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NC0gKiByZXF1aXJlIHRoZSBydGw4MzY3ZCB2ZW5kb3IgZHJpdmVyLiBXaXRoIGFsbCB0aGlzIHVuY2VydGFpbnR5LCB0aGUgZHJpdmVyIGhhc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU6ICogYmVlbiBtb2Rlc3RseSBuYW1lZCBydGw4MzY1bWIuIEZ1dHVyZSBpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gcmVuYW1lIHRoaW5nc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwOS0jaW5jbHVkZSBcXFwicnRsODN4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEwOiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTojaW5jbHVkZSBcXFwicnRsODM2NW1iX3ZsYW4uaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjU5LSAqIDMtYml0IE1TQiBmaWVsZCAoQ1RSTDEpLiBUaGUgY2hpcCByZXNldHMgdGhlbSB0byAweDFGRkZGOyBzZWVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2MDogKiBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjEtICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyNy0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfTUFDX0xPT1BCQUNLX01BU0tcXHRcXHQweDAwNDBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQyODovKiBTZWUgXFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjktI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX1ZMQU5fRUdSRVNTX01PREVfTUFTS1xcdFxcdDB4MDAzMFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzItLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzM6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDM0LSAqIEBSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTDogZm9sbG93IHVudGFnIG1hc2sgaW4gVkxBTjRrIHRhYmxlIGVudHJ5XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0Mi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ0MzplbnVtIHJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC1cXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4NzplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODgtXFx0UlRMODM2NU1CX01JQl9pZkluT2N0ZXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NDk6c3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTAtXFx0dTMyIG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTU4OnN0YXRpYyBzdHJ1Y3QgcnRsODM2NW1iX21pYl9jb3VudGVyIHJ0bDgzNjVtYl9taWJfY291bnRlcnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1OS1cXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjE4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjE5OnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MjE6c3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMi1cXHR1MTYgcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjYtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjI3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92Y1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjI4LVxcdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNy1cXHR7IDB4MTIwMCwgMHg3RkNCIH0sIHsgMHgwODg0LCAweDAwMDMgfSwgeyAweDA2RUIsIDB4MDAwMSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NDYtICogb3B0aW9uLCB3aGljaCBpcyB3aGF0IFJUTDgzNjdTIHBhcnRzIHNlZW4gc28gZmFyIHJlcG9ydC4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDc6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0OC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY0OTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NTAtXFx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjU4LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU5OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWlbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Mi1cXHR7IDB4MDUwMCwgMHg4MkYwIH0sIHsgMHgwNTAxLCAweEYxOTUgfSwgeyAweDA1MDIsIDB4MzFBMiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Njc6ZW51bSBydGw4MzY1bWJfcGh5X2ludGVyZmFjZV9tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2OC1cXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjc4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njc5OiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4MC0gKiBAcG9ydDogdGhlIHBvcnQgd2l0aCBhbiBleHRlcm5hbCBpbnRlcmZhY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg0LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cXHUwMDNlIHsgaWQsIHN1cHBvcnRlZF9pbnRlcmZhY2VzIH0uIFRvIGJlIGVtYmVkZGVkXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2ODU6ICogaW4gXFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg3OnN0cnVjdCBydGw4MzY1bWJfZXh0aW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4OC1cXHRpbnQgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjkzLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njk0OiAqIHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIC0gc3RhdGljIGNoaXAtc3BlY2lmaWMgaW5mb1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LSAqIEBuYW1lOiBodW1hbi1yZWFkYWJsZSBjaGlwIG5hbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzAzLSAqIGJ5IHRoaXMgZHJpdmVyLiBXaGVuIGFkZGluZyBzdXBwb3J0IGZvciBhbm90aGVyIGNoaXAgaW4gdGhlIGZhbWlseSwgYSBuZXdcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNDogKiBjaGlwIGluZm8gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBydGw4MzY1bWJfY2hpcF9pbmZvcyBhcnJheS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNjpzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDctXFx0Y29uc3QgY2hhciAqbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA5LVxcdHUzMiBjaGlwX3ZlcjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxMDpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCBleHRpbnRzW1JUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzExOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqamFtX3RhYmxlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzEyLVxcdHNpemVfdCBqYW1fc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE2LSNkZWZpbmUgUEhZX0lOVEYoX21vZGUpIChSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFXyAjIyBfbW9kZSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxOC1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyNS1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI2OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI3OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MjgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzM3LVxcdFxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mzg6XFx0XFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mzk6XFx0XFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc0MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTEtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1MjpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1MzpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzU0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2NC1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY1OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY2OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzcwOmVudW0gcnRsODM2NW1iX3N0cF9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzEtXFx0UlRMODM2NU1CX1NUUF9TVEFURV9ESVNBQkxFRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3NzplbnVtIHJ0bDgzNjVtYl9jcHVfaW5zZXJ0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODM6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4NC1cXHRSVEw4MzY1TUJfQ1BVX1BPU19BRlRFUl9TQSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc4ODplbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4OS1cXHRSVEw4MzY1TUJfQ1BVX0ZPUk1BVF84QllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTM6ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5NC1cXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTk6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MDAtICogQGVuYWJsZTogZW5hYmxlL2Rpc2FibGUgaGFyZHdhcmUgaW5zZXJ0aW9uIG9mIENQVSB0YWcgaW4gc3dpdGNoLVxcdTAwM2VDUFUgZnJhbWVzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxMC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxMTpzdHJ1Y3QgcnRsODM2NW1iX2NwdSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTItXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNC1cXHR1MzIgdHJhcF9wb3J0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE1OlxcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE2OlxcdGVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiBwb3NpdGlvbjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNzpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4gcnhfbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE4OlxcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODE5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMS0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyMjogKiBzdHJ1Y3QgcnRsODM2NW1iX3BvcnQgLSBwcml2YXRlIHBlci1wb3J0IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNC0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI1OiAqIEBzdGF0czogbGluayBzdGF0aXN0aWNzIHBvcHVsYXRlZCBieSBydGw4MzY1bWJfc3RhdHNfcG9sbCwgcmVhZHkgZm9yIGF0b21pY1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI2OiAqICAgICAgICAgYWNjZXNzIHZpYSBydGw4MzY1bWJfZ2V0X3N0YXRzNjRcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNy0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjktICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzA6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgzMS1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4Mzk6ICogc3RydWN0IHJ0bDgzNjVtYiAtIGRyaXZlciBwcml2YXRlIGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0MC0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODUyOnN0cnVjdCBydGw4MzY1bWIge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUzLVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTQtXFx0aW50IGlycTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NTpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU2OlxcdHN0cnVjdCBydGw4MzY1bWJfY3B1IGNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1Ny1cXHRzdHJ1Y3QgbXV0ZXggbWliX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTg6XFx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1OS1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjM6I2RlZmluZSBwY3NfdG9fcnRsODM2NW1iKF9wY3MpIGNvbnRhaW5lcl9vZigoX3BjcyksIHN0cnVjdCBydGw4MzY1bWIsIHBjcylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2NC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg2NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NzQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzUtXFx0XFx0XFx0XFx0ICAgICB1MzIgb2NwX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkwNDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cXHRcXHRcXHRcXHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTI6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE2OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3ByZXBhcmUocHJpdiwgcGh5LCBvY3BfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMwOlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk0ODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDktXFx0XFx0XFx0XFx0ICAgdTMyIG9jcF9hZGRyLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTU2OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk2MDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTYxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk3OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk4MDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05ODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5OTA6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA0OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMTg6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDE5LVxcdFxcdFxcdCAgICAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAzMjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNDUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ3OnJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ4LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNDk6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUwLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNTM6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDU0LVxcdFxcdFxcdFxcdTAwMjZtYi1cXHUwMDNlY2hpcF9pbmZvLVxcdTAwM2VleHRpbnRzW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0xMDY2PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNjc6cnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNjgtXFx0XFx0XFx0ICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIG1wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDcwLVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzE6XFx0c3RydWN0IHJ0bDgzNjVtYl9jcHUgKmNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzI6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4MzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9leHRfY29uZmlnX3JnbWlpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4NC1cXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4NS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDg2OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4NzpcXHRcXHRydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4OC1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcXHUwMDI2cHJpdi1cXHUwMDNlZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTUtXFx0ICogZm9yY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGludG8gYSBwYXJ0aWN1bGFyIG1vZGUsIHdoaWNoIGlzIGRvbmVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTY6XFx0ICogaW4gdGhlIHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3t1cCxkb3dufSBmdW5jdGlvbnMuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE3LVxcdCAqXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExNjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTY1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc193cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE4NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExODY6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTIyODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI5LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMzA6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjMxOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjMyLVxcdHUzMiBvcHRpb247XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzMtICogdGhlaXIgbWF4aW11bSBpbiBpdHMgc3dpdGNoIGluaXQsIHVuY29uZGl0aW9uYWxseSBmb3IgdGhlIHdob2xlIGNoaXBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyNzQ6ICogZmFtaWx5LiBUaGUgY2hpcCByZXNldCBpbiBydGw4MzY1bWJfc2V0dXAoKSBwdXRzIHRoZW0gYmFjayB0byB0aGVpciByZXNldFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI3NS0gKiBkZWZhdWx0IG9mIDB4MUZGRkYsIGEgfjEuMDQ4IEdicHMgbGltaXQgd2hpY2ggY2FwcyB0aGUgYWdncmVnYXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjgzOnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzA5OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTAtXFx0XFx0XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxMy17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzE0OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqc2RzX2phbTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTUtXFx0Y29uc3QgaW50IGlkID0gUlRMODM2NU1CX1NEU19FWFRfSU5URVJGQUNFX0lEO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNjpcXHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHBjc190b19ydGw4MzY1bWIocGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTctXFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMyNi1cXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjc6XFx0XFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX2hzZ21paTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjg6XFx0XFx0c2RzX2phbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfc2RzX2phbV9oc2dtaWkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMyOS1cXHRcXHRtb2RlID0gUlRMODM2NU1CX0VYVF9QT1JUX01PREVfSFNHTUlJO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMTpcXHRcXHRzZHNfamFtID0gcnRsODM2NW1iX3Nkc19qYW1fc2dtaWk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzMyOlxcdFxcdHNkc19qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX3Nkc19qYW1fc2dtaWkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMy1cXHRcXHRtb2RlID0gUlRMODM2NU1CX0VYVF9QT1JUX01PREVfU0dNSUk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNjMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNkc19qYW1fc2l6ZTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzY0OlxcdFxcdHJldCA9IHJ0bDgzNjVtYl9zZHNfd3JpdGUocHJpdiwgc2RzX2phbVtpXS5yZWcsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzY1LVxcdFxcdFxcdFxcdFxcdCAgc2RzX2phbVtpXS52YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzkwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM5MTpcXHRyZXQgPSBydGw4MzY1bWJfc2RzX3dyaXRlKHByaXYsIFJUTDgzNjVNQl9TRFNfUkVHX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5Mi1cXHRcXHRcXHRcXHQgIFJUTDgzNjVNQl9TRFNfUkVTRVRfREVBU1NFUlQpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ3LjU0NTE0Mjk3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgxMjM5NzU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHJ0bDgzNjVtYl9tYWluLmNgIGZpbGUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgY29kZSBzdXJyb3VuZGluZyB0aGUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBhbmQgYHJ0bDgzNjVtYl9wcm9iZWAgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjaGlwIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBzZXF1ZW5jZXMgYXJlIGhhbmRsZWQgaW4gdGhpcyBkcml2ZXIuIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZywgdGhhdCBgcnRsODM2NW1iX3Byb2JlYCBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZWN0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCB3aGljaCB3b3VsZCBsaWtlbHkgbWVhbiBhbGxvY2F0aW5nIHJlc291cmNlcywgY29uZmlndXJpbmcgdGhlIEkvTywgYW5kIHByb2JhYmx5IGNhbGxpbmcgc29tZSBraW5kIG9mIGxvdy1sZXZlbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLiBBbmQgdGhhdCByb3V0aW5lIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgYmUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYC4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgIEhvdyBpcyB0aGUgY2hpcCBhY3R1YWxseSBkZXRlY3RlZD8gSXMgaXQgSTJDLCBTUEksIG9yIHNvbWUgb3RoZXIgaW50ZXJmYWNlP1xuKiAgIFdoYXQgY2hlY2tzIGFyZSBwZXJmb3JtZWQgZHVyaW5nIHByb2JpbmcgdG8gZW5zdXJlIHRoZSBjaGlwIGlzIGEgdmFsaWQgUlRMODM2NU1CPyBWZW5kb3IgSUQsIERldmljZSBJRCwgZXRjLlxuKiAgIEFyZSB0aGVyZSBhbnkgY3JpdGljYWwgcmVnaXN0ZXIgYWNjZXNzZXMgdGhhdCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2hpcCBpcyBhY2Nlc3NpYmxlP1xuKiAgIFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyByZXF1ZXN0ZWQvYWxsb2NhdGVkIGR1cmluZyBwcm9iZSwgbGlrZSBtZW1vcnkgcmVnaW9ucywgSVJRcywgZXRjP1xuKiAgIEhvdyBkb2VzIHRoZSByZXNldCBmdW5jdGlvbiB3b3JrPyBJcyBpdCBhIGhhcmQgcmVzZXQ/IFNvZnR3YXJlIHJlc2V0PyBXaGF0IHJlZ2lzdGVyIG1hbmlwdWxhdGlvbnMgYXJlIGludm9sdmVkP1xuKiAgIFdoYXQgZXJyb3IgaGFuZGxpbmcgaXMgaW4gcGxhY2U/IEFyZSB0aGVyZSByZXRyaWVzPyBUaW1lb3V0IG1lY2hhbmlzbXM/XG4qICAgSSB3YW50IHRvIHNlZSB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgZXhhY3Qgb3JkZXIgd2lsbCBiZSBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNoaXAncyBwb3dlci11cCBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cblxuSSBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJIHN1c3BlY3QgdGhlIGByZXNldF9jaGlwYCBmdW5jdGlvbiBpcyBhIGNvcmUgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBsaWtlbHkgYSBzZXJpZXMgb2YgZGlyZWN0IHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMuIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IGVycm9yIGNvZGVzIGFyZSBoYW5kbGVkIGJldHdlZW4gdGhlIHR3byByb3V0aW5lcy4gSSdtIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc3R1ZmYgaGVyZSwgbGlrZWx5IGJpdCBtYW5pcHVsYXRpb24gYW5kIGRpcmVjdCByZWdpc3RlciBhZGRyZXNzZXMsIGhvcGVmdWxseSwgaXTigJlzIG5vdCB0b28gb2JmdXNjYXRlZC4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGNvZGUgZm9sbG93cyB0aGUgZXhwZWN0ZWQgcGF0dGVybnMgb3IgaWYgdGhlcmUgYXJlIGFueSB1bnVzdWFsIGFwcHJvYWNoZXMuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgYnVpbGRpbmcgbXkgaHlwb3RoZXNpcyBvbiBob3cgdGhlIG92ZXJhbGwgc3lzdGVtIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjMxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjU4LjM1NzU0MzYyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzODg4MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX3ZhcmlhbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5Mz1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTk0OmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzNTA9c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJ0bDgzNjVtYl9zdXBwbGllc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzUzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM1NDpjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM1NS1cXHQuZHNfb3BzID0gXFx1MDAyNnJ0bDgzNjVtYl9zd2l0Y2hfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0bDgzNjVtYl9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM2NzpcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsODM2NW1iXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzY4LVxcdHsgLyogc2VudGluZWwgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjo1Njo1OC40MDE5MzgxODlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE5MjYzOTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBydGw4MzY1bWIgQ29kZSBVc2FnZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiBgcnRsODM2NW1iX3ZhcmlhbnRgIGFuZCBgcnRsODM2NW1iX29mX21hdGNoYC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoZSBkcml2ZXIuIE15IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgcnRsODM2NW1iX21haW4uY2AgZmlsZSBhbmQgYWxzbyBsb29rIGZvciBhbnkgY3Jvc3MtcmVmZXJlbmNlcyBpbiBmaWxlcyByZWxhdGVkIHRvIHRoZSBTTUkgb3IgTURJTyBpbnRlcmZhY2VzIGxpa2UgYHJlYWx0ZWstc21pLmNgIG9yIGByZWFsdGVrLW1kaW8uY2AuIFRoaXMgaXMgbXkgdXN1YWwgcHJvY2VzcyB3aGVuIEkgYW0gdW5kZXJzdGFuZGluZyB0aGUgZnVuY3Rpb24gb2Ygc3BlY2lmaWMgdmFyaWFibGVzIGluIHRoZXNlIGRyaXZlcnMuIEJ5IGxvb2tpbmcgYXQgd2hlcmUgdGhlc2UgYXJlIGRlY2xhcmVkIGFuZCB3aGVyZSB0aGV5IGFyZSB1c2VkLCBJIGNhbiBnZXQgYSBnb29kIGZlZWwgZm9yIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBSZWFsdGVrIHN3aXRjaCBkcml2ZXIgZWNvc3lzdGVtLiBUaW1lIHRvIGdldCB0byBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNDYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjo1NzowMy41OTQ1ODEwNDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM1MDpcXHRzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcnRsODM2NW1iX3N1cHBsaWVzW10gPSB7XFxuMzM1MTpcXHRcXHRcXFwiYXZkZGhcXFwiLCBcXFwiYXZkZGxcXFwiLCBcXFwiZHZkZGlvXFxcIiwgXFxcImR2ZGRpbzFcXFwiLCBcXFwiZHZkZGxcXFwiLCBcXFwicGxsdmRkbFxcXCIsXFxuMzM1MjpcXHR9O1xcbjMzNTM6XFx0XFxuMzM1NDpcXHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xcbjMzNTU6XFx0XFx0LmRzX29wcyA9IFxcdTAwMjZydGw4MzY1bWJfc3dpdGNoX29wcyxcXG4zMzU2OlxcdFxcdC5vcHMgPSBcXHUwMDI2cnRsODM2NW1iX29wcyxcXG4zMzU3OlxcdFxcdC5waHlsaW5rX21hY19vcHMgPSBcXHUwMDI2cnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyxcXG4zMzU4OlxcdFxcdC5jbGtfZGVsYXkgPSAxMCxcXG4zMzU5OlxcdFxcdC5jbWRfcmVhZCA9IDB4YjksXFxuMzM2MDpcXHRcXHQuY21kX3dyaXRlID0gMHhiOCxcXG4zMzYxOlxcdFxcdC5jaGlwX2RhdGFfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgzNjVtYiksXFxuMzM2MjpcXHRcXHQuc3VwcGxpZXMgPSBydGw4MzY1bWJfc3VwcGxpZXMsXFxuMzM2MzpcXHRcXHQubnVtX3N1cHBsaWVzID0gQVJSQVlfU0laRShydGw4MzY1bWJfc3VwcGxpZXMpLFxcbjMzNjQ6XFx0fTtcXG4zMzY1OlxcdFxcbjMzNjY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XFxuMzM2NzpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsODM2NW1iXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXFxuMzM2ODpcXHRcXHR7IC8qIHNlbnRpbmVsICovIH1cXG4zMzY5OlxcdH07XFxuMzM3MDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBydGw4MzY1bWJfb2ZfbWF0Y2gpO1xcbjMzNzE6XFx0XFxuMzM3MjpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4zMzczOlxcdFxcdC5kcml2ZXIgPSB7XFxuMzM3NDpcXHRcXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG4zMzc1OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzc2OlxcdFxcdH0sXFxuMzM3NzpcXHRcXHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXFxuMzM3ODpcXHRcXHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxcbjMzNzk6XFx0XFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXFxuMzM4MDpcXHR9O1xcbjMzODE6XFx0XFxuMzM4MjpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcXG4zMzgzOlxcdFxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG4zMzg0OlxcdFxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG4zMzg1OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzg2OlxcdFxcdH0sXFxuMzM4NzpcXHRcXHQucHJvYmUgID0gcmVhbHRla19tZGlvX3Byb2JlLFxcbjMzODg6XFx0XFx0LnJlbW92ZSA9IHJlYWx0ZWtfbWRpb19yZW1vdmUsXFxuMzM4OTpcXHRcXHQuc2h1dGRvd24gPSByZWFsdGVrX21kaW9fc2h1dGRvd24sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjAzLjU5NDc3Mzk3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDg2MTE3MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgRHJpdmVyIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgc29tZXRoaW5nIGludGVyZXN0aW5nOiB3ZSd2ZSBnb3QgYm90aCBhbiBgcnRsODM2NW1iX3NtaV9kcml2ZXJgIGFuZCBhbiBgcnRsODM2NW1iX21kaW9fZHJpdmVyYC4gQm90aCBhcmUgdXNpbmcgT0YgKERldmljZSBUcmVlKSBtYXRjaGluZywgd2hpY2ggaXMgZ29vZCDigJMgY2xlYW5lciBhbmQgbW9yZSBmbGV4aWJsZS4gVGhlIG1hdGNoaW5nIHN0cmluZ3MgZm9yIGJvdGggYXJlIFwicmVhbHRlayxydGw4MzY1bWJcIiwgd2hpY2ggc3VnZ2VzdHMgdGhlc2UgZHJpdmVycyBhcmUgcHJvYmFibHkgaGFuZGxpbmcgdGhlIHNhbWUgaGFyZHdhcmUsIGp1c3QgdGhyb3VnaCBkaWZmZXJlbnQgaW50ZXJmYWNlcy4gVGhlIFNNSSBkcml2ZXIgbGlrZWx5IGhhbmRsZXMgdGhlIFJlYWx0ZWsgU3BlY2lmaWMgTWFuYWdlbWVudCBJbnRlcmZhY2UgKFNNSSksIGFuZCB0aGUgTURJTyBkcml2ZXIgd291bGQgZGVhbCB3aXRoIHRoZSBNRElPIGludGVyZmFjZSBvZiB0aGUgY2hpcC5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhleSBob29rIHVwIGFuZCBpbml0aWFsaXplLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzZXQgc2VxdWVuY2UsIGhvdyB0aGUgY2hpcCBnZXRzIGNvbmZpZ3VyZWQsIGFuZCB3aGVyZSB0aGlzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCBmdW5jdGlvbiBjb21lcyBpbnRvIHBsYXkuIFRpbWUgdG8gdHJhY2sgZG93biBhbGwgY2FsbHMgdG8gYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCB0byBzZWUgd2hlbiBhbmQgaG93IGl0J3MgdXNlZC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBkcml2ZXIgb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI5MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjA2LjA4MDg5NDU2MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NzY2MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX3Jlc2V0X2NoaXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0yOTU0PXN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyOTg0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMDEwPXN0YXRpYyBpbnQgcnRsODM2NW1iX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzAzMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMwMzE6XFx0cmV0ID0gcnRsODM2NW1iX3Jlc2V0X2NoaXAocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMDMyLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTc6MDYuMTI3Nzc2NzczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwMTQyNTA3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUlRMODM2NU1CIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYHJ0bDgzNjVtYl9zZXR1cCgpYCBmdW5jdGlvbiBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgZm9yIHNldHRpbmcgdXAgdGhlIFJlYWx0ZWsgUlRMODM2NU1CIHN3aXRjaCwgd2hpY2ggaXMgYSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN3aXRjaC4gRFNBIHN3aXRjaGVzLCBpbiBnZW5lcmFsLCBjb25uZWN0IHRvIHRoZSBNRElPIGJ1cyBvciB1c2UgU01JIChTZXJpYWwgTWFuYWdlbWVudCBJbnRlcmZhY2UsIHdoaWNoIGNhbiBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciBHUElPLWJpdGJhbmdlZCkuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgUmVhbHRlayBjaGlwIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIGVzcGVjaWFsbHkgb24gYW4gYW1kNjQgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyB3aGF0IEknbSB0YXJnZXRpbmcuXG5cbkxldCdzIGNhcmVmdWxseSBjb25zaWRlciB0aGUgcmVhc29ucyBhIHRhcmdldCBtaWdodCBiZSB1bnN1aXRhYmxlIGZvciBmdXp6aW5nLCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucy4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgc2NlbmFyaW9zLiAgSXQgbGlzdHM6XG5cbjEuICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToqKiBUaGluayB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgcmVxdWlyZSBhIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkLCBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4yLiAgKipVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6KiogIFRoaXMgaW5jbHVkZXMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIGFuZCB0aGluZ3MgbGlrZSBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0aGF0IG9ubHkgZ2V0IGV4ZWN1dGVkIGR1cmluZyBwaHlzaWNhbCBQQ0kgaG90LXVucGx1Z2dpbmcgb3IgZHJpdmVyIHVuYmluZGluZyB2aWEgc3lzZnMuIEFsc28gY29kZSBwYXRocyB0aGF0IGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuXG5cblNvLCB0aGUga2V5IGlzIHdoZXRoZXIgdGhlIERTQSBkcml2ZXIgKm9yKiB0aGUgUlRMODM2NU1CLCBzcGVjaWZpY2FsbHksIGNhbiBldmVuIGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gYSBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudCBvbiBhbWQ2NC4gIEkgc2VlIGEgYHJ0bDgzNjVtYl9vZl9tYXRjaGAgd2l0aCBhIGAuY29tcGF0aWJsZSA9IFwicmVhbHRlayxydGw4MzY1bWJcImAuIFRoYXQgbWVhbnMgaXQncyBsaWtlbHkgcHJvYmVkIGJhc2VkIG9uIHRoZSBEZXZpY2UgVHJlZS4gTURJTyBkcml2ZXJzIHVzdWFsbHkgcmVseSBvbiBgbWRpb19kcml2ZXJfcmVnaXN0ZXJgIG9yIHBsYXRmb3JtIGRyaXZlciBwcm9iZS5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXM6IERvZXMgc3l6a2FsbGVyLCBvciBjYW4gc3l6a2FsbGVyLCBjcmVhdGUgb3IgZW11bGF0ZSBSZWFsdGVrIFNNSSBvciBNRElPIGRldmljZXM/ICBJJ20gZ3Vlc3NpbmcgdGhlIGFuc3dlciBpcyBuby4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgRFNBIGRyaXZlcnMgZm9yIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgaW5jbHVkaW5nIFJUTDgzNjVNQiwgQjUzLCBNVjg4RTZ4eHgsIFNKQTExMDUsIGV0Yy4sIG5lZWQgKnBoeXNpY2FsKiBzd2l0Y2ggSUMgaGFyZHdhcmUgb3IgcGxhdGZvcm0gZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBEZXZpY2VUcmVlLCB3aGljaCBhcmUgY29ubmVjdGVkIHRvICpyZWFsKiBNRElPL1NNSSBidXNlcy5cblxuV2FpdCBhIHNlY29uZCwgaXMgdGhlcmUgKmFueSogd2F5IHRvIGVtdWxhdGUgYSBEU0Egc3dpdGNoPyBBaCEgYGRzYV9sb29wYCBpbiBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIC0gdGhhdCdzIGEgKm1vY2sqIERTQSBzd2l0Y2ggZHJpdmVyIGZvciB0ZXN0aW5nLiAgSG93ZXZlciwgYWxsIHRoZSAqb3RoZXIqIERTQSBkcml2ZXJzIChSZWFsdGVrLCBTSkExMTA1LCBNaWNyb2NoaXAsIEI1MywgZXRjLikgYXJlICpoYXJkd2FyZSogc3dpdGNoIGRyaXZlcnMsIGJ1aWx0IGZvciB0aG9zZSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggSUNzLiBUaGUgUlRMODM2NU1CLCBzcGVjaWZpY2FsbHksIGlzIGEgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIGNoaXAsIGxpa2VseSBzb21ldGhpbmcgbGlrZSB0aGUgUlRMODM2NU1CLVZDIG9yIFJUTDgzNjdTLlxuXG5Pa2F5LCBsZXQgbWUgY2hlY2sgdGhlIHByb2JlIG1lY2hhbmlzbSBpbiBgcmVhbHRlay1zbWkuY2AgYW5kIGByZWFsdGVrLW1kaW8uY2AgdG8gYmUgc3VyZS4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGlzIGlzIHByb2JhYmx5IGEgZGVhZCBlbmQgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBwcm9iZSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTc6MTIuMTQyMDI5ODg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArXFxuICAgMjpcXHQvKiBSZWFsdGVrIFNpbXBsZSBNYW5hZ2VtZW50IEludGVyZmFjZSAoU01JKSBkcml2ZXJcXG4gICAzOlxcdCAqIEl0IGNhbiBiZSBkaXNjdXNzZWQgaG93IFxcXCJzaW1wbGVcXFwiIHRoaXMgaW50ZXJmYWNlIGlzLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIFRoZSBTTUkgcHJvdG9jb2wgcGlnZ3ktYmFja3MgdGhlIE1ESU8gTURDIGFuZCBNRElPIHNpZ25hbHMgbGV2ZWxzXFxuICAgNjpcXHQgKiBidXQgdGhlIHByb3RvY29sIGlzIG5vdCBNRElPIGF0IGFsbC4gSW5zdGVhZCBpdCBpcyBhIFJlYWx0ZWtcXG4gICA3OlxcdCAqIHBlY3VsYXJpdHkgdGhhdCBuZWVkIHRvIGJpdC1iYW5nIHRoZSBsaW5lcyBpbiBhIHNwZWNpYWwgd2F5IHRvXFxuICAgODpcXHQgKiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzd2l0Y2guXFxuICAgOTpcXHQgKlxcbiAgMTA6XFx0ICogQVNJQ3Mgd2UgaW50ZW5kIHRvIHN1cHBvcnQgd2l0aCB0aGlzIGRyaXZlcjpcXG4gIDExOlxcdCAqXFxuICAxMjpcXHQgKiBSVEw4MzY2ICAgLSBUaGUgb3JpZ2luYWwgdmVyc2lvbiwgYXBwYXJlbnRseVxcbiAgMTM6XFx0ICogUlRMODM2OSAgIC0gU2ltaWxhciBlbm91Z2ggdG8gaGF2ZSB0aGUgc2FtZSBkYXRzaGVldCBhcyBSVEw4MzY2XFxuICAxNDpcXHQgKiBSVEw4MzY2UkIgLSBQcm9iYWJseSByZWFkcyBvdXQgXFxcIlJUTDgzNjYgcmV2aXNpb24gQlxcXCIsIGhhcyBhIHF1aXRlXFxuICAxNTpcXHQgKiAgICAgICAgICAgICBkaWZmZXJlbnQgcmVnaXN0ZXIgbGF5b3V0IGZyb20gdGhlIG90aGVyIHR3b1xcbiAgMTY6XFx0ICogUlRMODM2NlMgIC0gSXMgdGhpcyBcXFwiUlRMODM2NiBzdXBlclxcXCI/XFxuICAxNzpcXHQgKiBSVEw4MzY3ICAgLSBIYXMgYW4gT3BlbldSVCBkcml2ZXIgYXMgd2VsbFxcbiAgMTg6XFx0ICogUlRMODM2OFMgIC0gU2VlbXMgdG8gYmUgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgUlRMODM2NlJCXFxuICAxOTpcXHQgKiBSVEw4MzcwICAgLSBBbHNvIHVzZXMgU01JXFxuICAyMDpcXHQgKlxcbiAgMjE6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE3IExpbnVzIFdhbGxlaWogXFx1MDAzY2xpbnVzLndhbGxlaWpAbGluYXJvLm9yZ1xcdTAwM2VcXG4gIDIyOlxcdCAqIENvcHlyaWdodCAoQykgMjAxMCBBbnR0aSBTZXBww6Rsw6QgXFx1MDAzY2Euc2VwcGFsYUBnbWFpbC5jb21cXHUwMDNlXFxuICAyMzpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUm9tYW4gWWVyeW9taW4gXFx1MDAzY3JvbWFuQGFkdmVtLmx2XFx1MDAzZVxcbiAgMjQ6XFx0ICogQ29weXJpZ2h0IChDKSAyMDExIENvbGluIExlaXRuZXIgXFx1MDAzY2NvbGluLmxlaXRuZXJAZ29vZ2xlbWFpbC5jb21cXHUwMDNlXFxuICAyNTpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBHYWJvciBKdWhvcyBcXHUwMDNjanVob3NnQG9wZW53cnQub3JnXFx1MDAzZVxcbiAgMjY6XFx0ICovXFxuICAyNzpcXHRcXG4gIDI4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDI5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDMwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4gIDMxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbiAgMzI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAgMzM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICAzNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4gIDM1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcXHUwMDNlXFxuICAzNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAzNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVnbWFwLmhcXHUwMDNlXFxuICAzODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0b3BzLmhcXHUwMDNlXFxuICAzOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcXHUwMDNlXFxuICA0MDpcXHRcXG4gIDQxOlxcdCNpbmNsdWRlIFxcXCJyZWFsdGVrLmhcXFwiXFxuICA0MjpcXHQjaW5jbHVkZSBcXFwicmVhbHRlay1zbWkuaFxcXCJcXG4gIDQzOlxcdCNpbmNsdWRlIFxcXCJydGw4M3h4LmhcXFwiXFxuICA0NDpcXHRcXG4gIDQ1OlxcdCNkZWZpbmUgUkVBTFRFS19TTUlfQUNLX1JFVFJZX0NPVU5UXFx0XFx0NVxcbiAgNDY6XFx0XFxuICA0NzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfY2xrX2RlbGF5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuICA0ODpcXHR7XFxuICA0OTpcXHRcXHRuZGVsYXkocHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlY2xrX2RlbGF5KTtcXG4gIDUwOlxcdH1cXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIHZvaWQgcmVhbHRla19zbWlfc3RhcnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gIDUzOlxcdHtcXG4gIDU0OlxcdFxcdC8qIFNldCBHUElPIHBpbnMgdG8gb3V0cHV0IG1vZGUsIHdpdGggaW5pdGlhbCBzdGF0ZTpcXG4gIDU1OlxcdFxcdCAqIFNDSyA9IDAsIFNEQSA9IDFcXG4gIDU2OlxcdFxcdCAqL1xcbiAgNTc6XFx0XFx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVxcdTAwM2VtZGMsIDApO1xcbiAgNTg6XFx0XFx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG4gIDU5OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0LyogQ0xLIDE6IDAgLVxcdTAwM2UgMSwgMSAtXFx1MDAzZSAwICovXFxuICA2MjpcXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG4gIDYzOlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG4gIDY0OlxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbiAgNjU6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQvKiBDTEsgMjogKi9cXG4gIDY4OlxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbiAgNjk6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbiAgNzA6XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sIDApO1xcbiAgNzE6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbiAgNzI6XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuICA3MzpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuICA3NDpcXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMSk7XFxuICA3NTpcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdHN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gIDc4OlxcdHtcXG4gIDc5OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG4gIDgwOlxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGlvLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTc6MTIuMTQyMTMxOTI2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMDI1MjkxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhlIFJUTDgzNjVNQiBEcml2ZXIgaXMgTm90IEZ1enphYmxlIGluIFN0YW5kYXJkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBSZWFsdGVrIHN3aXRjaCBkcml2ZXIsIGBydGw4MzY1bWJfbWFpbi5jYCwgaXMgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC5cblxuRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBhIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUMuIEl0IHVzZXMgZWl0aGVyIHRoZSBwcm9wcmlldGFyeSBTTUkgcHJvdG9jb2wgKGJpdC1iYW5nZWQgR1BJTyBsaW5lcywgTURDL01ESU8pIG9yIHRoZSBzdGFuZGFyZCBNRElPIGJ1cy4gQm90aCBjb21tdW5pY2F0aW9uIG1ldGhvZHMgcmVseSBvbiBPRiAoRGV2aWNlIFRyZWUpIGJpbmRpbmdzLCB3aGljaCBpcyB0eXBpY2FsIGZvciBlbWJlZGRlZCBzeXN0ZW1zIGxpa2UgQVJNL01JUFMgcm91dGVycyB3aGVyZSB0aGVzZSBzd2l0Y2hlcyBhcmUgY29tbW9ubHkgdXNlZC4gVGhhdCBhbG9uZSBpcyBhIHJlZCBmbGFnLCBhcyBJIGtub3cgb3VyIGZ1enppbmcgaGVhdmlseSByZWxpZXMgb24gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5JIGtub3cgdGhhdCBhbWQ2NCBzeXN0ZW1zLCBhbmQgc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbCBtYWNoaW5lcywgZG9uJ3QgaGF2ZSBhIERldmljZSBUcmVlIGJpbmRpbmcgb3IgYSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDIHRvIHRhbGsgdG8uIEV2ZW4gKmlmKiBJIGNvdWxkIGZvcmNlIGBDT05GSUdfT0ZgIHRvIGJlIGNvbXBpbGVkIG9uIGFtZDY0LCB0aGVyZSBpc24ndCBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9jayBkcml2ZXIgdG8gaW5zdGFudGlhdGUgb3IgZW11bGF0ZSB0aGlzIHN3aXRjaC4gSXQncyBlc3NlbnRpYWxseSBhIGRlYWQgZW5kLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhpcyB1c2luZyB0aGUgdHJpYWdlIGd1aWRlbGluZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBmb2xsb3dpbmcgdGhlIHJ1bGVzIGhlcmUuXG5cbkkgZ28gYmFjayB0byB0aGUgcmVhY2hhYmlsaXR5IGd1aWRlbGluZXMuIFRoZSBwcmltYXJ5IGdhdGUgaXMgcmVhY2hhYmlsaXR5LiBUaGUgZ3VpZGVsaW5lcyBleHBsaWNpdGx5IHN0YXRlIHRoYXQgZnV6emluZyBpcyBvbmx5IGFwcHJvcHJpYXRlIGZvciBjb2RlIHRoYXQgY2FuICpleGVjdXRlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvZGUgdGhhdCdzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBnZXRzIGEgaGFyZCBwYXNzLiBGdXJ0aGVybW9yZSwgdGhlIGd1aWRlbGluZXMgbGlzdCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhcyBleGFtcGxlcyBvZiB1bnJlYWNoYWJsZSBjb2RlLiBTb3VuZHMgZmFtaWxpYXIuLi5cblxuVGhlIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyICphYnNvbHV0ZWx5KiBmaXRzIHRoaXMgZGVzY3JpcHRpb24uIEl0J3MgZm9yIGEgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIEFTSUMgKFJlYWx0ZWsgUlRMODM2NU1CL1JUTDgzNjdTKSwgY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTywgYXMgZGVzY3JpYmVkIGluIHRoZSBEZXZpY2UgVHJlZSwgYW5kIG5vbmUgb2YgdGhpcyBleGlzdHMgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gSXQncyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYC5cblxuSGVyZSdzIGEgY2xlYXIgc3RydWN0dXJlIGZvciB0aGUgcmVzcG9uc2U6XG5cbjEuICAqKldvcnRoRnV6emluZzoqKiBgZmFsc2VgXG4yLiAgKipGb2N1c1N5bWJvbHM6KiogYFtdYCAoTm90aGluZyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QpXG4zLiAgKipFbmFibGVDb25maWdzOioqIGBbXWAgKE5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZGVkKVxuNC4gICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCB0b3VjaGVzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgYSBkcml2ZXIgZm9yIFJlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIEFTSUNzIChSVEw4MzY1TUIvUlRMODM2N1MpIHRoYXQgYXJlIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8gYnVzLiBUaGlzIHNldHVwIHJlbGllcyBvbiBEZXZpY2UgVHJlZS1iYXNlZCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBvbiBhbWQ2NC4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIGR1ZSB0byB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzgzLCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjE5LjI0NDY2NDY1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjE5LjI0NDY4ODI0MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow69wg4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 12:54:49 +0000 UTC FinishedAt: 2026-09-09 12:57:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY2hpcCByZXNldCBsb2dpYyBhbmQgdGltaW5nIGluIHJ0bDgzNjVtYl9yZXNldF9jaGlwKCkgd2l0aGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgYXR0YWNoZWQgdmlhIFNNSSBvciBNRElPIGJ1c2VzIGRlZmluZWQgdmlhIERldmljZSBUcmVlIChPRiksIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU0MTRjMTU1NDE0ZGMzMGZhYzU2MmU0MmE2ODE1MmM2NGRmZjNhYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDEyOjU2OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXG5pbmRleCBmODIyMGQ4MzJlNDYwLi4xOWUyY2Y2MDVkNGU2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuQEAgLTEzNiw2ICYjNDM7MTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4mIzQzOy8qIFRpbWUgdGhlIGNoaXAgbmVlZHMgdG8gY29tcGxldGUgYSByZXNldCwgcGVyIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiAqL1xuJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVNcdDEwMDBcbiYjNDM7XG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgxLDE3ICYjNDM7Mjk4NCwyNyBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiB7XG4gXHR1MzIgdmFsO1xuJiM0MztcdGludCByZXQ7XG4gXG4gXHRwcml2LVx1MDAzZXdyaXRlX3JlZ19ub2Fjayhwcml2LCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsXG4gXHRcdFx0ICAgICAgRklFTERfUFJFUChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLLCAxKSk7XG4gXG4tXHQvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXBcbi1cdCAqIGZvciAxMDAgbXMgYmVmb3JlIGFjY2Vzc2luZyBhbnkgcmVnaXN0ZXJzIHRvIHByZXZlbnQgQUNLIHRpbWVvdXRzLlxuJiM0MztcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGVcbiYjNDM7XHQgKiByZXNldCBiaXQgY2xlYXJzIGJlZm9yZSB0aGF0IHRpbWUgaXMgdXAsIGFuZCBpdCBvbmx5IHJlcG9ydHMgdGhhdFxuJiM0MztcdCAqIHRoZSByZWdpc3RlciBibG9jayBpcyBiYWNrLCBub3QgdGhhdCB0aGUgY2hpcCBoYXMgZmluaXNoZWQgaXRzXG4mIzQzO1x0ICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nXG4mIzQzO1x0ICogYW55dGhpbmcuXG4gXHQgKi9cbi1cdG1zbGVlcCgxMDApO1xuLVx0cmV0dXJuIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsXG4tXHRcdFx0XHRcdCEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbi1cdFx0XHRcdFx0MjAwMDAsIDFlNik7XG4mIzQzO1x0bXNsZWVwKFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVMpO1xuJiM0MztcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCBcdTAwMjZ2YWwpO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHRpZiAodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKVxuJiM0MztcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY2hpcCByZXNldCBsb2dpYyBhbmQgdGltaW5nIGluIHJ0bDgzNjVtYl9yZXNldF9jaGlwKCkgd2l0aGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYykuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgYXR0YWNoZWQgdmlhIFNNSSBvciBNRElPIGJ1c2VzIGRlZmluZWQgdmlhIERldmljZSBUcmVlIChPRiksIHdoaWNoIGFyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NC4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU0MTRjMTU1NDE0ZGMzMGZhYzU2MmU0MmE2ODE1MmM2NGRmZjNhYTMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIFNlcCA5IDEyOjU2OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMKaW5kZXggZjgyMjBkODMyZTQ2MC4uMTllMmNmNjA1ZDRlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jCkBAIC0xMzYsNiAmIzQzOzEzNiw5IEBACiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0sJMHgwMDAyCiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0sJMHgwMDAxCiAKJiM0MzsvKiBUaW1lIHRoZSBjaGlwIG5lZWRzIHRvIGNvbXBsZXRlIGEgcmVzZXQsIHBlciBSZWFsdGVrIGRvY3VtZW50YXRpb24gKi8KJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVMJMTAwMAomIzQzOwogLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovCiAjZGVmaW5lIFJUTDgzNjVNQl9JTlRSX1BPTEFSSVRZX1JFRwkweDExMDAKICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLCTB4MDAwMQpAQCAtMjk4MSwxNyAmIzQzOzI5ODQsMjcgQEAgc3RhdGljIGludCBydGw4MzY1bWJfc3dpdGNoX2luaXQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdikKIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdikKIHsKIAl1MzIgdmFsOwomIzQzOwlpbnQgcmV0OwogCiAJcHJpdi0mZ3Q7d3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywKIAkJCSAgICAgIEZJRUxEX1BSRVAoUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSywgMSkpOwogCi0JLyogUmVhbHRlayBkb2N1bWVudGF0aW9uIHNheXMgdGhlIGNoaXAgbmVlZHMgMSBzZWNvbmQgdG8gcmVzZXQuIFNsZWVwCi0JICogZm9yIDEwMCBtcyBiZWZvcmUgYWNjZXNzaW5nIGFueSByZWdpc3RlcnMgdG8gcHJldmVudCBBQ0sgdGltZW91dHMuCiYjNDM7CS8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGUKJiM0MzsJICogcmVzZXQgYml0IGNsZWFycyBiZWZvcmUgdGhhdCB0aW1lIGlzIHVwLCBhbmQgaXQgb25seSByZXBvcnRzIHRoYXQKJiM0MzsJICogdGhlIHJlZ2lzdGVyIGJsb2NrIGlzIGJhY2ssIG5vdCB0aGF0IHRoZSBjaGlwIGhhcyBmaW5pc2hlZCBpdHMKJiM0MzsJICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nCiYjNDM7CSAqIGFueXRoaW5nLgogCSAqLwotCW1zbGVlcCgxMDApOwotCXJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7bWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCwKLQkJCQkJISh2YWwgJmFtcDsgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSyksCi0JCQkJCTIwMDAwLCAxZTYpOwomIzQzOwltc2xlZXAoUlRMODM2NU1CX0NISVBfUkVTRVRfVElNRV9NUyk7CiYjNDM7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkKHByaXYtJmd0O21hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCAmYW1wO3ZhbCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlpZiAodmFsICZhbXA7IFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0spCiYjNDM7CQlyZXR1cm4gLUVUSU1FRE9VVDsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODM2NW1iX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQzMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFJUTDgzNjVNQiBEU0EgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgc3BlY2lmaWNhbGx5IHRhcmdldHMgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaW52b2x2ZXMgdGhlIFJlYWx0ZWsgUlRMODM2NU1CLCBhbmQgdGhhdCBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBEYXRhIFN3aXRjaGluZyBBcmNoaXRlY3R1cmUgKERTQSkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIHZlcmlmeSB3aGF0JiMzOTtzIGJlaW5nIG1vZGlmaWVkLiBBaCwgaXQmIzM5O3MgYHJ0bDgzNjVtYl9yZXNldF9jaGlwKClgIGluIHRoYXQgc2FtZSBmaWxlLiBUaGlzIGRyaXZlciBtdXN0IGhhbmRsZSB0aGUgcmVzZXQgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgcHJldHR5IGZ1bmRhbWVudGFsLgoKTm93LCBpdCYjMzk7cyB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgZHJpdmVyLiBJcyBpdCBmb3IgYSBjb21tb25seSB1c2VkIHN3aXRjaD8gT3IgaXMgaXQgcGFydCBvZiBzb21lIG1vcmUgc3BlY2lhbGl6ZWQgaGFyZHdhcmU/IEdpdmVuIHRoYXQgaXQmIzM5O3MgYSBEU0Egc3dpdGNoIGRyaXZlciBmb3IgdGhlIFJUTDgzNjVNQiwgSSBoYXZlIGEgcHJldHR5IGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgd2FudCB0byBkZXRlcm1pbmUgdGhlIHJlYWNoYWJpbGl0eSBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlLiBJcyB0aGlzIGNvZGUgYWN0aXZlbHkgdXNlZCwgb3IgaXMgaXQgcG90ZW50aWFsbHkgZGVhZCBjb2RlPwoKVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJiMzOTtsbCBzdGFydCBieSBncmVwcGluZyB0aGUgY29kZSBmb3IgdXNhZ2UgYW5kIGNvbmZpZ3VyYXRpb25zLCBhbmQgcmVhZCB0aGUgcmVsZXZhbnQgZmlsZXMg4oCTIEtjb25maWcsIHByb2JhYmx5LiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGFuZCBzZWUgd2hlcmUgdGhpcyBkcml2ZXIgZml0cyBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9EU0FfUkVBTFRFSyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZz0xNj1pZiBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjE4OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cdGJvb2wgXCYjMzQ7UmVhbHRlayBNRElPIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjYtXHRib29sIFwmIzM0O1JlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MzI6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6Mzk6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzcwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGF0IEtjb25maWcgZmlsZToKCioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgRFNBIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGNyYWNrIG9wZW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zIOKAkyBvciBhdCBsZWFzdCwgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFJlYWx0ZWsgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSBkcml2ZXIgd2l0aGluIHRoZSBrZXJuZWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYXJlIGJlaW5nIGNvbnRyb2xsZWQgaGVyZSwgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgdG8gdXMsIGFuZCBob3cgd2UgY2FuIGJlc3QgbGV2ZXJhZ2UgdGhlbSBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yOgoKKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3Igb3B0aW9ucyBkb2VzIHRoaXMgZGVwZW5kIG9uPyBBcmUgdGhlcmUgc3BlY2lmaWMgbmV0d29yayBzdWJzeXN0ZW1zIG9yIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGl0IHJlcXVpcmVzPyBJZGVudGlmeWluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCBmb3IgYSBzbW9vdGggaW50ZWdyYXRpb24gYW5kIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIGNvbmZsaWN0cy4KKiAgICoqRmVhdHVyZSBDb250cm9sOioqIFdoYXQgc3BlY2lmaWMgUmVhbHRlayBzd2l0Y2ggZmVhdHVyZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGlzIEtjb25maWcgZmlsZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYmFzaWMgdGhpbmdzIGxpa2UgcG9ydCBjb25maWd1cmF0aW9uIChzcGVlZCwgZHVwbGV4KSwgVkxBTiBzdXBwb3J0LCBRb1MgY2FwYWJpbGl0aWVzLCBvciBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgdHJhZmZpYyBzaGFwaW5nIGFuZCBtaXJyb3Jpbmc/IFRoZSBncmFudWxhcml0eSBvZiBjb250cm9sIGlzIGtleS4KKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGVhY2ggb3B0aW9uPyBLbm93aW5nIHRoZSBkZWZhdWx0cyBwcm92aWRlcyBjb250ZXh0LCBwYXJ0aWN1bGFybHkgd2hlbiBpbnZlc3RpZ2F0aW5nIHBvdGVudGlhbCBpc3N1ZXMgb3IgY3VzdG9taXppbmcgdGhlIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBib2FyZCBvciBuZXR3b3JrIHNldHVwLgoqICAgKipIZWxwIFRleHQ6KiogSG9wZWZ1bGx5LCB0aGUgS2NvbmZpZyBmaWxlIGhhcyBnb29kLCBkZXNjcmlwdGl2ZSBoZWxwIHRleHQuIFRoaXMgaXMgYSB2aXRhbCByZXNvdXJjZSBmb3IgYW55b25lIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBDbGVhciBhbmQgY29uY2lzZSBleHBsYW5hdGlvbnMgc2F2ZSBhIGxvdCBvZiB0aW1lIGFuZCBndWVzc3dvcmsuCiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBgaWZgIHN0YXRlbWVudHMgb3Igb3RoZXIgY29uZGl0aW9uYWwgbG9naWMuIFRoaXMgd2lsbCBzaG93IGhvdyBvcHRpb25zIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkIGJhc2VkIG9uIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9ucyBvciBoYXJkd2FyZSBjb25zdHJhaW50cy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyBkaWZmZXJlbnQgUmVhbHRlayBzd2l0Y2ggbW9kZWxzIG9yIGRyaXZlciB2ZXJzaW9ucyBhcmUgaGFuZGxlZC4KKiAgICoqSW50ZWdyYXRpb24gUG9pbnRzOioqIEkmIzM5O2xsIGJlIGdsYW5jaW5nIGZvciBhbnkgcmVmZXJlbmNlcyB0byBvdGhlciBLY29uZmlnIGZpbGVzIG9yIGRyaXZlciBjb21wb25lbnRzLiBUaGlzIG1heSBoZWxwIGluIGlkZW50aWZ5aW5nIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBwb2ludHMsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG5ldHdvcmsgc3Vic3lzdGVtcyBvciBkZXBlbmRlbmNpZXMgb24gb3RoZXIgUmVhbHRlayBjb21wb25lbnRzLgoKRXNzZW50aWFsbHksIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIGZvciB0aGlzIGRyaXZlciBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLiBUaGUgS2NvbmZpZyBmaWxlIGlzIHRoZSByb2FkbWFwLiBOb3csIGxldCYjMzk7cyBnZXQgcmVhZGluZyBhbmQgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRtZW51Y29uZmlnIE5FVF9EU0FfUkVBTFRFS1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTkVUX0RTQVxuICAgNTpcdFx0c2VsZWN0IEZJWEVEX1BIWVxuICAgNjpcdFx0c2VsZWN0IElSUV9ET01BSU5cbiAgIDc6XHRcdHNlbGVjdCBSRUFMVEVLX1BIWVxuICAgODpcdFx0c2VsZWN0IFJFR01BUFxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFJlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGNoaXBzLlxuICAxMTpcdFxuICAxMjpcdFx0ICBOb3RlIHRoYXQgYXQgbGVhc3Qgb25lIGludGVyZmFjZSBkcml2ZXIgbXVzdCBiZSBlbmFibGVkIGZvciB0aGVcbiAgMTM6XHRcdCAgc3ViZHJpdmVycyB0byBiZSBsb2FkZWQuIE1vcmVvdmVyLCBhbiBpbnRlcmZhY2UgZHJpdmVyIGNhbm5vdCBhY2hpZXZlXG4gIDE0Olx0XHQgIGFueXRoaW5nIHdpdGhvdXQgYXQgbGVhc3Qgb25lIHN1YmRyaXZlciBlbmFibGVkLlxuICAxNTpcdFxuICAxNjpcdGlmIE5FVF9EU0FfUkVBTFRFS1xuICAxNzpcdFxuICAxODpcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xuICAxOTpcdFx0Ym9vbCBcJiMzNDtSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcJiMzNDtcbiAgMjA6XHRcdGRlcGVuZHMgb24gT0ZcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkXG4gIDIzOlx0XHQgIHRocm91Z2ggTURJTy5cbiAgMjQ6XHRcbiAgMjU6XHRjb25maWcgTkVUX0RTQV9SRUFMVEVLX1NNSVxuICAyNjpcdFx0Ym9vbCBcJiMzNDtSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuICAyNzpcdFx0ZGVwZW5kcyBvbiBPRlxuICAyODpcdFx0aGVscFxuICAyOTpcdFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHJlZ2lzdGVyaW5nIHN3aXRjaGVzIGNvbm5lY3RlZFxuICAzMDpcdFx0ICB0aHJvdWdoIFNNSS5cbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQlxuICAzMzpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclwmIzM0O1xuICAzNDpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX1JFQUxURUtfU01JIHx8IE5FVF9EU0FfUkVBTFRFS19NRElPXG4gIDM1Olx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMOF80XG4gIDM2Olx0XHRoZWxwXG4gIDM3Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY1TUItVkMgYW5kIFJUTDgzNjdTLlxuICAzODpcdFxuICAzOTpcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDQxOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19TTUkgfHwgTkVUX0RTQV9SRUFMVEVLX01ESU9cbiAgNDI6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19SVEw0X0FcbiAgNDM6XHRcdGhlbHBcbiAgNDQ6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBSZWFsdGVrIFJUTDgzNjZSQi5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXG4gIDQ3Olx0XHRib29sXG4gIDQ4Olx0XHRkZXBlbmRzIG9uIChMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCKVxuICA0OTpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXG4gIDUwOlx0XHRkZWZhdWx0IE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcbiAgNTE6XHRcbiAgNTI6XHRlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NDcKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBSVEw4MzY1TUIgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcnRsODM2NW1iX21haW4uY2AgZHJpdmVyIGlzIGluaXRpYWxpemVkIGFuZCBwcm9iZWQuIE15IHByaW1hcnkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgaXRzIG9wZXJhdGlvbiBoaW5nZXMgb24gcGFydGljdWxhciBwaHlzaWNhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgcGVyaGFwcyByZXF1aXJpbmcgRGV2aWNlIFRyZWUgKE9GKSwgdGhlIE1ESU8gYnVzLCBvciBldmVuIHRoZSBTTUkgYnVzLiBNeSBpbW1lZGlhdGUgY291cnNlIG9mIGFjdGlvbiBpcyB0byBleHBsb3JlIHRoZSByZWxldmFudCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UmIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7cmVhbHRlay1tZGlvLmMmIzM0OywKICAgICYjMzQ7cmVhbHRlay1tZGlvLmgmIzM0OywKICAgICYjMzQ7cmVhbHRlay1zbWkuYyYjMzQ7LAogICAgJiMzNDtyZWFsdGVrLXNtaS5oJiMzNDssCiAgICAmIzM0O3JlYWx0ZWsuaCYjMzQ7LAogICAgJiMzNDtydGw4MzY1bWJfbDIuYyYjMzQ7LAogICAgJiMzNDtydGw4MzY1bWJfbDIuaCYjMzQ7LAogICAgJiMzNDtydGw4MzY1bWJfbWFpbi5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjVtYl90YWJsZS5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjVtYl90YWJsZS5oJiMzNDssCiAgICAmIzM0O3J0bDgzNjVtYl92bGFuLmMmIzM0OywKICAgICYjMzQ7cnRsODM2NW1iX3ZsYW4uaCYjMzQ7LAogICAgJiMzNDtydGw4MzY2LWNvcmUuYyYjMzQ7LAogICAgJiMzNDtydGw4MzY2cmItbGVkcy5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjZyYi5jJiMzNDssCiAgICAmIzM0O3J0bDgzNjZyYi5oJiMzNDssCiAgICAmIzM0O3J0bDgzeHguYyYjMzQ7LAogICAgJiMzNDtydGw4M3h4LmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwODIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgUmVhbHRlayBTd2l0Y2ggRHJpdmVyIFByb2JlIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayBkcml2ZXIgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN3aXRjaCBkZXZpY2VzIGFyZSBiZWluZyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiB0aGUgYHJ0bDgzNjVtYl9wcm9iZWAsIGByZWFsdGVrX3NtaV9wcm9iZWAsIGFuZCBgcmVhbHRla19tZGlvX3Byb2JlYCBmdW5jdGlvbnMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgZGlmZmVyZW50IFJlYWx0ZWsgc3dpdGNoIGNoaXBzZXRzLCBvciBwZXJoYXBzIGRpZmZlcmVudCBpbnRlcmZhY2VzIGxpa2UgU01JIG9yIE1ESU8sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cuIFdoYXQgY2hlY2tzIGFyZSB0aGV5IHBlcmZvcm1pbmc/IFdoYXQgcmVzb3VyY2VzIGFyZSB0aGV5IGFsbG9jYXRpbmcgYW5kIGluaXRpYWxpemluZz8gQXJlIHRoZXkgcmVseWluZyBvbiBwbGF0Zm9ybS1zcGVjaWZpYyBkYXRhLCBvciBhcmUgdGhlcmUgbW9yZSBnZW5lcmljIG1ldGhvZHMgYXQgcGxheT8gSSYjMzk7bGwgcHJvYmFibHkgbG9vayBmb3IgdGhlIG1hdGNoaW5nIGByZW1vdmVgIGZ1bmN0aW9ucyBzaG9ydGx5IGFmdGVyIHRoaXMgc28gSSBoYXZlIGEgcGljdHVyZSBvZiB0aGUgbGlmZWN5Y2xlLiBJIGV4cGVjdCB0byBiZSBhYmxlIHRvIG1hcCBhIHBhcnRpY3VsYXIgc3dpdGNoIHRvIGVhY2ggb2YgdGhlc2UsIGJ1dCBJIHdvbmRlciBpZiB0aGVyZSBhcmUgb3ZlcmxhcHBpbmcgZnVuY3Rpb25zLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEFyZSB0aGVyZSBhbnkgY29tbW9uIGVycm9yIGhhbmRsaW5nIHBhdHRlcm5zIHRoYXQgSSBjYW4gbGV2ZXJhZ2UgaW4gbXkgY3VycmVudCBwcm9qZWN0PyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgUmVhbHRlayBzd2l0Y2ggaW50ZXJmYWNlcyBhcmUgZGV0ZWN0ZWQgYW5kIGNvbmZpZ3VyZWQuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBmaXJzdCBvbmXigKYKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2ODMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlPTE3PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgJiM0Mzs9IHJ0bDgzNjVtYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxOTpydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMDpcdFx0ICBydGw4MzY1bWJfdGFibGUubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjE6XHRcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XHRcdCAgcnRsODM2NW1iX2wyLm8gXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIzOiMgZW5kIG9mIHJ0bDgzNjVtYi1vYmpzXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5Mz1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjk6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX2wyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwOiNpbmNsdWRlIFwmIzM0O3J0bDgzNjVtYl90YWJsZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMS0jaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTMtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDA6c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjX2tleSBrZXk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMDItXHR1OCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMTUtXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTIyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTIzOnN0cnVjdCBydGw4MzY1bWJfbDJfbWMge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tY19rZXkga2V5O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTI1LVx0dTE2IG1lbWJlcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTY0OnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgKnVjLCB1MTYgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIwMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIwMzpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b19tYyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyNjI6ICogcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKCkgLSBnZXQgdGhlIG5leHQgVW5pY2FzdCBMMiBlbnRyeVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYzLSAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4MS0gKiovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODI6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVx0XHRcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODUtXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4NjpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XHRydGw4MzY1bWJfbDJfZGF0YV90b191YyhkYXRhLCBcdTAwMjZ1Yyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA2LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMxMDpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMxMS1cdHUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMyOC1cdHVjLmFnZSA9IDE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XHRydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShcdTAwMjZ1YywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzEtXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMzLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNDU6aW50IHJ0bDgzNjVtYl9sMl9kZWxfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0OS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzUxLVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYwLVx0dWMuYWdlID0gMDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2MTpcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFx1MDAyNnVjLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXHQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2ODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4My1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NDk6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTAtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1My1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyBtYyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDU1LVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY1LVx0bWMuaXNfc3RhdGljID0gMTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2NjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2OC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY5Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzQtXHRcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ3NTpcdFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXHUwMDI2bWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc2LVx0XHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ5MDpcdFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVx0fSBlbHNlIGlmIChyZXQgPT0gLUVOT0VOVCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUwODpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MDktXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUxOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyMS1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjU6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjYtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzEtXHRtYy5rZXkuaXZsID0gdHJ1ZTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNC1cdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNi1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NTA6XHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcdTAwMjZtYyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NTEtXHRkZXZfZGJnKHByaXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2Ny1cdH1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU2ODpcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFx1MDAyNm1jLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3MC1cdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1NzE6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXHUwMDI2YWRkcixcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTYtXHRcdFx0ICAgICBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE3OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xOS1cdFx0XHR1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMDppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjItXHRcdFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjM6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI1OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXHRcdFx0dTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyODppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI5LVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0LSAqIHJlcXVpcmUgdGhlIHJ0bDgzNjdkIHZlbmRvciBkcml2ZXIuIFdpdGggYWxsIHRoaXMgdW5jZXJ0YWludHksIHRoZSBkcml2ZXIgaGFzXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OiAqIGJlZW4gbW9kZXN0bHkgbmFtZWQgcnRsODM2NW1iLiBGdXR1cmUgaW1wbGVtZW50b3JzIG1heSB3aXNoIHRvIHJlbmFtZSB0aGluZ3NcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDktI2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMDojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfbDIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX3ZsYW4uaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNTktICogMy1iaXQgTVNCIGZpZWxkIChDVFJMMSkuIFRoZSBjaGlwIHJlc2V0cyB0aGVtIHRvIDB4MUZGRkY7IHNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyNjA6ICogcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cygpLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjEtICovXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjctI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX01BQ19MT09QQkFDS19NQVNLXHRcdDB4MDA0MFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0Mjg6LyogU2VlIFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyOS0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfVkxBTl9FR1JFU1NfTU9ERV9NQVNLXHRcdDB4MDAzMFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDMyLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzM6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzQtICogQFJUTDgzNjVNQl9WTEFOX0VHUkVTU19NT0RFX09SSUdJTkFMOiBmb2xsb3cgdW50YWcgbWFzayBpbiBWTEFONGsgdGFibGUgZW50cnlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDQzOmVudW0gcnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDQtXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4NzplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4OC1cdFJUTDgzNjVNQl9NSUJfaWZJbk9jdGV0cyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU0OC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTQ5OnN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTAtXHR1MzIgb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NTg6c3RhdGljIHN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIgcnRsODM2NW1iX21pYl9jb3VudGVyc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTktXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYxOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjE5OnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMi1cdHUxNiByZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjYtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Mjc6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyOC1cdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjM3LVx0eyAweDEyMDAsIDB4N0ZDQiB9LCB7IDB4MDg4NCwgMHgwMDAzIH0sIHsgMHgwNkVCLCAweDAwMDEgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0Ni0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ3OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1fc2dtaWlbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjUwLVx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1OC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU5OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2MC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1faHNnbWlpW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Mi1cdHsgMHgwNTAwLCAweDgyRjAgfSwgeyAweDA1MDEsIDB4RjE5NSB9LCB7IDB4MDUwMiwgMHgzMUEyIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY2NzplbnVtIHJ0bDgzNjVtYl9waHlfaW50ZXJmYWNlX21vZGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY3OC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njc5OiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjgwLSAqIEBwb3J0OiB0aGUgcG9ydCB3aXRoIGFuIGV4dGVybmFsIGludGVyZmFjZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg0LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cdTAwM2UgeyBpZCwgc3VwcG9ydGVkX2ludGVyZmFjZXMgfS4gVG8gYmUgZW1iZWRkZWRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg1OiAqIGluIFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODYtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY4NzpzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4OC1cdGludCBwb3J0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjkzLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2OTQ6ICogc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gLSBzdGF0aWMgY2hpcC1zcGVjaWZpYyBpbmZvXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5NS0gKiBAbmFtZTogaHVtYW4tcmVhZGFibGUgY2hpcCBuYW1lXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDMtICogYnkgdGhpcyBkcml2ZXIuIFdoZW4gYWRkaW5nIHN1cHBvcnQgZm9yIGFub3RoZXIgY2hpcCBpbiB0aGUgZmFtaWx5LCBhIG5ld1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDQ6ICogY2hpcCBpbmZvIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgcnRsODM2NW1iX2NoaXBfaW5mb3MgYXJyYXkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzA2OnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA3LVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwOS1cdHUzMiBjaGlwX3ZlcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzEwOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgZXh0aW50c1tSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzExOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5ICpqYW1fdGFibGU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxMi1cdHNpemVfdCBqYW1fc2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxNi0jZGVmaW5lIFBIWV9JTlRGKF9tb2RlKSAoUlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV8gIyMgX21vZGUpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE4LVx0e1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI1LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MjY6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mjc6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyOC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MzctXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjczODpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjczOTpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzQwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1MS1cdFx0fSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzUyOlx0XHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzUzOlx0XHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTQtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY0LVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NjU6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NjY6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2Ny1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3MDplbnVtIHJ0bDgzNjVtYl9zdHBfc3RhdGUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzEtXHRSVEw4MzY1TUJfU1RQX1NUQVRFX0RJU0FCTEVEID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Nzc3OmVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzgtXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzgyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODM6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg0LVx0UlRMODM2NU1CX0NQVV9QT1NfQUZURVJfU0EgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODg6ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4OS1cdFJUTDgzNjVNQl9DUFVfRk9STUFUXzhCWVRFUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5MzplbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzk4LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTk6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgwMC0gKiBAZW5hYmxlOiBlbmFibGUvZGlzYWJsZSBoYXJkd2FyZSBpbnNlcnRpb24gb2YgQ1BVIHRhZyBpbiBzd2l0Y2gtXHUwMDNlQ1BVIGZyYW1lc1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODEwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTE6c3RydWN0IHJ0bDgzNjVtYl9jcHUge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTItXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNC1cdHUzMiB0cmFwX3BvcnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNTpcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTY6XHRlbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24gcG9zaXRpb247XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNzpcdGVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiByeF9sZW5ndGg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxODpcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTktfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMS0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODIyOiAqIHN0cnVjdCBydGw4MzY1bWJfcG9ydCAtIHByaXZhdGUgcGVyLXBvcnQgZGF0YVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjMtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNC0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MjU6ICogQHN0YXRzOiBsaW5rIHN0YXRpc3RpY3MgcG9wdWxhdGVkIGJ5IHJ0bDgzNjVtYl9zdGF0c19wb2xsLCByZWFkeSBmb3IgYXRvbWljXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNjogKiAgICAgICAgIGFjY2VzcyB2aWEgcnRsODM2NW1iX2dldF9zdGF0czY0XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNy0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI5LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzA6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODMxLVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgzOC0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODM5OiAqIHN0cnVjdCBydGw4MzY1bWIgLSBkcml2ZXIgcHJpdmF0ZSBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0MC0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1MS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODUyOnN0cnVjdCBydGw4MzY1bWIge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTMtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTQtXHRpbnQgaXJxO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTU6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTY6XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSBjcHU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1Ny1cdHN0cnVjdCBtdXRleCBtaWJfbG9jaztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU4Olx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU5LVx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2Mi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODYzOiNkZWZpbmUgcGNzX3RvX3J0bDgzNjVtYihfcGNzKSBjb250YWluZXJfb2YoKF9wY3MpLCBzdHJ1Y3QgcnRsODM2NW1iLCBwY3MpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODY1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9wb2xsX2J1c3koc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg3My1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODc0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzUtXHRcdFx0XHQgICAgIHUzMiBvY3BfYWRkcilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTA0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcmVhZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDUtXHRcdFx0XHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTExLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkxNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE2Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShwcml2LCBwaHksIG9jcF9hZGRyKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkyOS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMwOlx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk0ODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0OS1cdFx0XHRcdCAgIHUzMiBvY3BfYWRkciwgdTE2IGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1NjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NjA6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NjEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTc5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5ODA6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTgxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTkwOnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA0Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcmVhZChwcml2LCBwaHksIG9jcF9hZGRyLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA1LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAxODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cdFx0XHQgICAgICAgdTE2IHZhbClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMzI6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDMzLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ3OnJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNDgte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ5Olx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVx1MDAzZWNoaXBfZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1MC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIFJUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNTM6XHRcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDU0LVx0XHRcdFx1MDAyNm1iLVx1MDAzZWNoaXBfaW5mby1cdTAwM2VleHRpbnRzW2ldO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MTA2Nj1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNjc6cnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA2OC1cdFx0XHQgICBlbnVtIGRzYV90YWdfcHJvdG9jb2wgbXApXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDcwLVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzE6XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSAqY3B1O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDcyOlx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNzMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDgzOnN0YXRpYyBpbnQgcnRsODM2NW1iX2V4dF9jb25maWdfcmdtaWkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODQtXHRcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDg1LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4NjpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDg3Olx0XHRydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDg4LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXHUwMDI2cHJpdi1cdTAwM2Vkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTUtXHQgKiBmb3JjaW5nIHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaW50byBhIHBhcnRpY3VsYXIgbW9kZSwgd2hpY2ggaXMgZG9uZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE2Olx0ICogaW4gdGhlIHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3t1cCxkb3dufSBmdW5jdGlvbnMuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTctXHQgKlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE2NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE2NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExODUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExODY6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE4Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI3LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjI4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyOS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMzA6XHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHByaXYtXHUwMDNlY2hpcF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjMxOlx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIzMi1cdHUzMiBvcHRpb247XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjczLSAqIHRoZWlyIG1heGltdW0gaW4gaXRzIHN3aXRjaCBpbml0LCB1bmNvbmRpdGlvbmFsbHkgZm9yIHRoZSB3aG9sZSBjaGlwXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyNzQ6ICogZmFtaWx5LiBUaGUgY2hpcCByZXNldCBpbiBydGw4MzY1bWJfc2V0dXAoKSBwdXRzIHRoZW0gYmFjayB0byB0aGVpciByZXNldFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjc1LSAqIGRlZmF1bHQgb2YgMHgxRkZGRiwgYSB+MS4wNDggR2JwcyBsaW1pdCB3aGljaCBjYXBzIHRoZSBhZ2dyZWdhdGVcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODItICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyODM6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMwOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMwOTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTAtXHRcdFx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxMy17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMTQ6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKnNkc19qYW07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTUtXHRjb25zdCBpbnQgaWQgPSBSVEw4MzY1TUJfU0RTX0VYVF9JTlRFUkZBQ0VfSUQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMTY6XHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHBjc190b19ydGw4MzY1bWIocGNzKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxNy1cdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzI2LVx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjc6XHRcdHNkc19qYW0gPSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjg6XHRcdHNkc19qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX3Nkc19qYW1faHNnbWlpKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMyOS1cdFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX0hTR01JSTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMzE6XHRcdHNkc19qYW0gPSBydGw4MzY1bWJfc2RzX2phbV9zZ21paTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMjpcdFx0c2RzX2phbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfc2RzX2phbV9zZ21paSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzMtXHRcdG1vZGUgPSBSVEw4MzY1TUJfRVhUX1BPUlRfTU9ERV9TR01JSTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNjMtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBzZHNfamFtX3NpemU7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzNjQ6XHRcdHJldCA9IHJ0bDgzNjVtYl9zZHNfd3JpdGUocHJpdiwgc2RzX2phbVtpXS5yZWcsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNjUtXHRcdFx0XHRcdCAgc2RzX2phbVtpXS52YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5MC1cdCAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzkxOlx0cmV0ID0gcnRsODM2NW1iX3Nkc193cml0ZShwcml2LCBSVEw4MzY1TUJfU0RTX1JFR19SRVNFVCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5Mi1cdFx0XHRcdCAgUlRMODM2NU1CX1NEU19SRVNFVF9ERUFTU0VSVCk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzE1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgcnRsODM2NW1iX21haW4uY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBjb2RlIHN1cnJvdW5kaW5nIHRoZSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGFuZCBgcnRsODM2NW1iX3Byb2JlYCBmdW5jdGlvbnMuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNoaXAgaW5pdGlhbGl6YXRpb24gYW5kIHJlc2V0IHNlcXVlbmNlcyBhcmUgaGFuZGxlZCBpbiB0aGlzIGRyaXZlci4gSSYjMzk7bSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZywgdGhhdCBgcnRsODM2NW1iX3Byb2JlYCBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZWN0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCB3aGljaCB3b3VsZCBsaWtlbHkgbWVhbiBhbGxvY2F0aW5nIHJlc291cmNlcywgY29uZmlndXJpbmcgdGhlIEkvTywgYW5kIHByb2JhYmx5IGNhbGxpbmcgc29tZSBraW5kIG9mIGxvdy1sZXZlbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLiBBbmQgdGhhdCByb3V0aW5lIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgYmUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgSG93IGlzIHRoZSBjaGlwIGFjdHVhbGx5IGRldGVjdGVkPyBJcyBpdCBJMkMsIFNQSSwgb3Igc29tZSBvdGhlciBpbnRlcmZhY2U/CiogICBXaGF0IGNoZWNrcyBhcmUgcGVyZm9ybWVkIGR1cmluZyBwcm9iaW5nIHRvIGVuc3VyZSB0aGUgY2hpcCBpcyBhIHZhbGlkIFJUTDgzNjVNQj8gVmVuZG9yIElELCBEZXZpY2UgSUQsIGV0Yy4KKiAgIEFyZSB0aGVyZSBhbnkgY3JpdGljYWwgcmVnaXN0ZXIgYWNjZXNzZXMgdGhhdCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2hpcCBpcyBhY2Nlc3NpYmxlPwoqICAgV2hhdCByZXNvdXJjZXMgYXJlIGJlaW5nIHJlcXVlc3RlZC9hbGxvY2F0ZWQgZHVyaW5nIHByb2JlLCBsaWtlIG1lbW9yeSByZWdpb25zLCBJUlFzLCBldGM/CiogICBIb3cgZG9lcyB0aGUgcmVzZXQgZnVuY3Rpb24gd29yaz8gSXMgaXQgYSBoYXJkIHJlc2V0PyBTb2Z0d2FyZSByZXNldD8gV2hhdCByZWdpc3RlciBtYW5pcHVsYXRpb25zIGFyZSBpbnZvbHZlZD8KKiAgIFdoYXQgZXJyb3IgaGFuZGxpbmcgaXMgaW4gcGxhY2U/IEFyZSB0aGVyZSByZXRyaWVzPyBUaW1lb3V0IG1lY2hhbmlzbXM/CiogICBJIHdhbnQgdG8gc2VlIHRoZSBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBleGFjdCBvcmRlciB3aWxsIGJlIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY2hpcCYjMzk7cyBwb3dlci11cCBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4KCkkgbmVlZCB0byBzZWUgdGhlIGRlcGVuZGVuY2llcy4gSSBzdXNwZWN0IHRoZSBgcmVzZXRfY2hpcGAgZnVuY3Rpb24gaXMgYSBjb3JlIGZ1bmN0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIGxpa2VseSBhIHNlcmllcyBvZiBkaXJlY3QgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcy4gSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IGVycm9yIGNvZGVzIGFyZSBoYW5kbGVkIGJldHdlZW4gdGhlIHR3byByb3V0aW5lcy4gSSYjMzk7bSBleHBlY3Rpbmcgc29tZSBwcmV0dHkgbG93LWxldmVsIHN0dWZmIGhlcmUsIGxpa2VseSBiaXQgbWFuaXB1bGF0aW9uIGFuZCBkaXJlY3QgcmVnaXN0ZXIgYWRkcmVzc2VzLCBob3BlZnVsbHksIGl04oCZcyBub3QgdG9vIG9iZnVzY2F0ZWQuIEkgd2FudCB0byBzZWUgaWYgdGhpcyBjb2RlIGZvbGxvd3MgdGhlIGV4cGVjdGVkIHBhdHRlcm5zIG9yIGlmIHRoZXJlIGFyZSBhbnkgdW51c3VhbCBhcHByb2FjaGVzLiBUaGlzIGlzIHdoZXJlIEkgY2FuIHN0YXJ0IGJ1aWxkaW5nIG15IGh5cG90aGVzaXMgb24gaG93IHRoZSBvdmVyYWxsIHN5c3RlbSB3b3Jrcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iX3ZhcmlhbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9MTkzPWV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5NDpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzUwPXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBydGw4MzY1bWJfc3VwcGxpZXNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNTQ6Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM1NS1cdC5kc19vcHMgPSBcdTAwMjZydGw4MzY1bWJfc3dpdGNoX29wcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzNjY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNjc6XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzY1bWJcJiMzNDssIC5kYXRhID0gXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjgtXHR7IC8qIHNlbnRpbmVsICovIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMyNDYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBydGw4MzY1bWIgQ29kZSBVc2FnZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYHJ0bDgzNjVtYl92YXJpYW50YCBhbmQgYHJ0bDgzNjVtYl9vZl9tYXRjaGAuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGVpciB1c2FnZSB3aXRoaW4gdGhlIGRyaXZlci4gTXkgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIGBydGw4MzY1bWJfbWFpbi5jYCBmaWxlIGFuZCBhbHNvIGxvb2sgZm9yIGFueSBjcm9zcy1yZWZlcmVuY2VzIGluIGZpbGVzIHJlbGF0ZWQgdG8gdGhlIFNNSSBvciBNRElPIGludGVyZmFjZXMgbGlrZSBgcmVhbHRlay1zbWkuY2Agb3IgYHJlYWx0ZWstbWRpby5jYC4gVGhpcyBpcyBteSB1c3VhbCBwcm9jZXNzIHdoZW4gSSBhbSB1bmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbiBvZiBzcGVjaWZpYyB2YXJpYWJsZXMgaW4gdGhlc2UgZHJpdmVycy4gQnkgbG9va2luZyBhdCB3aGVyZSB0aGVzZSBhcmUgZGVjbGFyZWQgYW5kIHdoZXJlIHRoZXkgYXJlIHVzZWQsIEkgY2FuIGdldCBhIGdvb2QgZmVlbCBmb3IgdGhlaXIgcHVycG9zZSB3aXRoaW4gdGhlIFJlYWx0ZWsgc3dpdGNoIGRyaXZlciBlY29zeXN0ZW0uIFRpbWUgdG8gZ2V0IHRvIGl0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzNTA6XHRzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcnRsODM2NW1iX3N1cHBsaWVzW10gPSB7XG4zMzUxOlx0XHRcJiMzNDthdmRkaFwmIzM0OywgXCYjMzQ7YXZkZGxcJiMzNDssIFwmIzM0O2R2ZGRpb1wmIzM0OywgXCYjMzQ7ZHZkZGlvMVwmIzM0OywgXCYjMzQ7ZHZkZGxcJiMzNDssIFwmIzM0O3BsbHZkZGxcJiMzNDssXG4zMzUyOlx0fTtcbjMzNTM6XHRcbjMzNTQ6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xuMzM1NTpcdFx0LmRzX29wcyA9IFx1MDAyNnJ0bDgzNjVtYl9zd2l0Y2hfb3BzLFxuMzM1NjpcdFx0Lm9wcyA9IFx1MDAyNnJ0bDgzNjVtYl9vcHMsXG4zMzU3Olx0XHQucGh5bGlua19tYWNfb3BzID0gXHUwMDI2cnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyxcbjMzNTg6XHRcdC5jbGtfZGVsYXkgPSAxMCxcbjMzNTk6XHRcdC5jbWRfcmVhZCA9IDB4YjksXG4zMzYwOlx0XHQuY21kX3dyaXRlID0gMHhiOCxcbjMzNjE6XHRcdC5jaGlwX2RhdGFfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgzNjVtYiksXG4zMzYyOlx0XHQuc3VwcGxpZXMgPSBydGw4MzY1bWJfc3VwcGxpZXMsXG4zMzYzOlx0XHQubnVtX3N1cHBsaWVzID0gQVJSQVlfU0laRShydGw4MzY1bWJfc3VwcGxpZXMpLFxuMzM2NDpcdH07XG4zMzY1Olx0XG4zMzY2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG4zMzY3Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzY1bWJcJiMzNDssIC5kYXRhID0gXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXG4zMzY4Olx0XHR7IC8qIHNlbnRpbmVsICovIH1cbjMzNjk6XHR9O1xuMzM3MDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XG4zMzcxOlx0XG4zMzcyOlx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRsODM2NW1iX3NtaV9kcml2ZXIgPSB7XG4zMzczOlx0XHQuZHJpdmVyID0ge1xuMzM3NDpcdFx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1zbWlcJiMzNDssXG4zMzc1Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcbjMzNzY6XHRcdH0sXG4zMzc3Olx0XHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXG4zMzc4Olx0XHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxuMzM3OTpcdFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXG4zMzgwOlx0fTtcbjMzODE6XHRcbjMzODI6XHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcbjMzODM6XHRcdC5tZGlvZHJ2LmRyaXZlciA9IHtcbjMzODQ6XHRcdFx0Lm5hbWUgPSBcJiMzNDtydGw4MzY1bWItbWRpb1wmIzM0OyxcbjMzODU6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuMzM4NjpcdFx0fSxcbjMzODc6XHRcdC5wcm9iZSAgPSByZWFsdGVrX21kaW9fcHJvYmUsXG4zMzg4Olx0XHQucmVtb3ZlID0gcmVhbHRla19tZGlvX3JlbW92ZSxcbjMzODk6XHRcdC5zaHV0ZG93biA9IHJlYWx0ZWtfbWRpb19zaHV0ZG93bixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQyOTAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBEcml2ZXIgRXhwbG9yYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHNvbWV0aGluZyBpbnRlcmVzdGluZzogd2UmIzM5O3ZlIGdvdCBib3RoIGFuIGBydGw4MzY1bWJfc21pX2RyaXZlcmAgYW5kIGFuIGBydGw4MzY1bWJfbWRpb19kcml2ZXJgLiBCb3RoIGFyZSB1c2luZyBPRiAoRGV2aWNlIFRyZWUpIG1hdGNoaW5nLCB3aGljaCBpcyBnb29kIOKAkyBjbGVhbmVyIGFuZCBtb3JlIGZsZXhpYmxlLiBUaGUgbWF0Y2hpbmcgc3RyaW5ncyBmb3IgYm90aCBhcmUgJiMzNDtyZWFsdGVrLHJ0bDgzNjVtYiYjMzQ7LCB3aGljaCBzdWdnZXN0cyB0aGVzZSBkcml2ZXJzIGFyZSBwcm9iYWJseSBoYW5kbGluZyB0aGUgc2FtZSBoYXJkd2FyZSwganVzdCB0aHJvdWdoIGRpZmZlcmVudCBpbnRlcmZhY2VzLiBUaGUgU01JIGRyaXZlciBsaWtlbHkgaGFuZGxlcyB0aGUgUmVhbHRlayBTcGVjaWZpYyBNYW5hZ2VtZW50IEludGVyZmFjZSAoU01JKSwgYW5kIHRoZSBNRElPIGRyaXZlciB3b3VsZCBkZWFsIHdpdGggdGhlIE1ESU8gaW50ZXJmYWNlIG9mIHRoZSBjaGlwLgoKTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhleSBob29rIHVwIGFuZCBpbml0aWFsaXplLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzZXQgc2VxdWVuY2UsIGhvdyB0aGUgY2hpcCBnZXRzIGNvbmZpZ3VyZWQsIGFuZCB3aGVyZSB0aGlzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCBmdW5jdGlvbiBjb21lcyBpbnRvIHBsYXkuIFRpbWUgdG8gdHJhY2sgZG93biBhbGwgY2FsbHMgdG8gYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCB0byBzZWUgd2hlbiBhbmQgaG93IGl0JiMzOTtzIHVzZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgZHJpdmVyIG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRsODM2NW1iX3Jlc2V0X2NoaXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI5NTQ9c3RhdGljIGludCBydGw4MzY1bWJfc3dpdGNoX2luaXQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI5ODQ6c3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMwMTA9c3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzAzMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzAzMTpcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMDMyLVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk5NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDY0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSVEw4MzY1TUIgRHJpdmVyJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBgcnRsODM2NW1iX3NldHVwKClgIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIHRoZSBlbnRyeSBwb2ludCBmb3Igc2V0dGluZyB1cCB0aGUgUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoLCB3aGljaCBpcyBhIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgc3dpdGNoLiBEU0Egc3dpdGNoZXMsIGluIGdlbmVyYWwsIGNvbm5lY3QgdG8gdGhlIE1ESU8gYnVzIG9yIHVzZSBTTUkgKFNlcmlhbCBNYW5hZ2VtZW50IEludGVyZmFjZSwgd2hpY2ggY2FuIGJlIHBsYXRmb3JtLXNwZWNpZmljIG9yIEdQSU8tYml0YmFuZ2VkKS4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBzcGVjaWZpYyBSZWFsdGVrIGNoaXAgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgZXNwZWNpYWxseSBvbiBhbiBhbWQ2NCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSB0YXJnZXRpbmcuCgpMZXQmIzM5O3MgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSByZWFzb25zIGEgdGFyZ2V0IG1pZ2h0IGJlIHVuc3VpdGFibGUgZm9yIGZ1enppbmcsIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLiBTZWN0aW9uIDIgaGlnaGxpZ2h0cyB0aGUgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UmIzM0OyBzY2VuYXJpb3MuICBJdCBsaXN0czoKCjEuICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToqKiBUaGluayB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgcmVxdWlyZSBhIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkLCBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCjIuICAqKlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoqKiAgVGhpcyBpbmNsdWRlcyBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIGxpa2UgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgYW5kIHRoaW5ncyBsaWtlIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIHRoYXQgb25seSBnZXQgZXhlY3V0ZWQgZHVyaW5nIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnZ2luZyBvciBkcml2ZXIgdW5iaW5kaW5nIHZpYSBzeXNmcy4gQWxzbyBjb2RlIHBhdGhzIHRoYXQgYXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4KClNvLCB0aGUga2V5IGlzIHdoZXRoZXIgdGhlIERTQSBkcml2ZXIgKm9yKiB0aGUgUlRMODM2NU1CLCBzcGVjaWZpY2FsbHksIGNhbiBldmVuIGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gYSBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudCBvbiBhbWQ2NC4gIEkgc2VlIGEgYHJ0bDgzNjVtYl9vZl9tYXRjaGAgd2l0aCBhIGAuY29tcGF0aWJsZSA9ICYjMzQ7cmVhbHRlayxydGw4MzY1bWImIzM0O2AuIFRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IHByb2JlZCBiYXNlZCBvbiB0aGUgRGV2aWNlIFRyZWUuIE1ESU8gZHJpdmVycyB1c3VhbGx5IHJlbHkgb24gYG1kaW9fZHJpdmVyX3JlZ2lzdGVyYCBvciBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUuCgpUaGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyBzeXprYWxsZXIsIG9yIGNhbiBzeXprYWxsZXIsIGNyZWF0ZSBvciBlbXVsYXRlIFJlYWx0ZWsgU01JIG9yIE1ESU8gZGV2aWNlcz8gIEkmIzM5O20gZ3Vlc3NpbmcgdGhlIGFuc3dlciBpcyBuby4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgRFNBIGRyaXZlcnMgZm9yIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgaW5jbHVkaW5nIFJUTDgzNjVNQiwgQjUzLCBNVjg4RTZ4eHgsIFNKQTExMDUsIGV0Yy4sIG5lZWQgKnBoeXNpY2FsKiBzd2l0Y2ggSUMgaGFyZHdhcmUgb3IgcGxhdGZvcm0gZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBEZXZpY2VUcmVlLCB3aGljaCBhcmUgY29ubmVjdGVkIHRvICpyZWFsKiBNRElPL1NNSSBidXNlcy4KCldhaXQgYSBzZWNvbmQsIGlzIHRoZXJlICphbnkqIHdheSB0byBlbXVsYXRlIGEgRFNBIHN3aXRjaD8gQWghIGBkc2FfbG9vcGAgaW4gYGRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jYCAtIHRoYXQmIzM5O3MgYSAqbW9jayogRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRlc3RpbmcuICBIb3dldmVyLCBhbGwgdGhlICpvdGhlciogRFNBIGRyaXZlcnMgKFJlYWx0ZWssIFNKQTExMDUsIE1pY3JvY2hpcCwgQjUzLCBldGMuKSBhcmUgKmhhcmR3YXJlKiBzd2l0Y2ggZHJpdmVycywgYnVpbHQgZm9yIHRob3NlIHNwZWNpZmljIHBoeXNpY2FsIEV0aGVybmV0IHN3aXRjaCBJQ3MuIFRoZSBSVEw4MzY1TUIsIHNwZWNpZmljYWxseSwgaXMgYSBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggY2hpcCwgbGlrZWx5IHNvbWV0aGluZyBsaWtlIHRoZSBSVEw4MzY1TUItVkMgb3IgUlRMODM2N1MuCgpPa2F5LCBsZXQgbWUgY2hlY2sgdGhlIHByb2JlIG1lY2hhbmlzbSBpbiBgcmVhbHRlay1zbWkuY2AgYW5kIGByZWFsdGVrLW1kaW8uY2AgdG8gYmUgc3VyZS4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGlzIGlzIHByb2JhYmx5IGEgZGVhZCBlbmQgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBwcm9iZSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAmIzQzO1xuICAgMjpcdC8qIFJlYWx0ZWsgU2ltcGxlIE1hbmFnZW1lbnQgSW50ZXJmYWNlIChTTUkpIGRyaXZlclxuICAgMzpcdCAqIEl0IGNhbiBiZSBkaXNjdXNzZWQgaG93IFwmIzM0O3NpbXBsZVwmIzM0OyB0aGlzIGludGVyZmFjZSBpcy5cbiAgIDQ6XHQgKlxuICAgNTpcdCAqIFRoZSBTTUkgcHJvdG9jb2wgcGlnZ3ktYmFja3MgdGhlIE1ESU8gTURDIGFuZCBNRElPIHNpZ25hbHMgbGV2ZWxzXG4gICA2Olx0ICogYnV0IHRoZSBwcm90b2NvbCBpcyBub3QgTURJTyBhdCBhbGwuIEluc3RlYWQgaXQgaXMgYSBSZWFsdGVrXG4gICA3Olx0ICogcGVjdWxhcml0eSB0aGF0IG5lZWQgdG8gYml0LWJhbmcgdGhlIGxpbmVzIGluIGEgc3BlY2lhbCB3YXkgdG9cbiAgIDg6XHQgKiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzd2l0Y2guXG4gICA5Olx0ICpcbiAgMTA6XHQgKiBBU0lDcyB3ZSBpbnRlbmQgdG8gc3VwcG9ydCB3aXRoIHRoaXMgZHJpdmVyOlxuICAxMTpcdCAqXG4gIDEyOlx0ICogUlRMODM2NiAgIC0gVGhlIG9yaWdpbmFsIHZlcnNpb24sIGFwcGFyZW50bHlcbiAgMTM6XHQgKiBSVEw4MzY5ICAgLSBTaW1pbGFyIGVub3VnaCB0byBoYXZlIHRoZSBzYW1lIGRhdHNoZWV0IGFzIFJUTDgzNjZcbiAgMTQ6XHQgKiBSVEw4MzY2UkIgLSBQcm9iYWJseSByZWFkcyBvdXQgXCYjMzQ7UlRMODM2NiByZXZpc2lvbiBCXCYjMzQ7LCBoYXMgYSBxdWl0ZVxuICAxNTpcdCAqICAgICAgICAgICAgIGRpZmZlcmVudCByZWdpc3RlciBsYXlvdXQgZnJvbSB0aGUgb3RoZXIgdHdvXG4gIDE2Olx0ICogUlRMODM2NlMgIC0gSXMgdGhpcyBcJiMzNDtSVEw4MzY2IHN1cGVyXCYjMzQ7P1xuICAxNzpcdCAqIFJUTDgzNjcgICAtIEhhcyBhbiBPcGVuV1JUIGRyaXZlciBhcyB3ZWxsXG4gIDE4Olx0ICogUlRMODM2OFMgIC0gU2VlbXMgdG8gYmUgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgUlRMODM2NlJCXG4gIDE5Olx0ICogUlRMODM3MCAgIC0gQWxzbyB1c2VzIFNNSVxuICAyMDpcdCAqXG4gIDIxOlx0ICogQ29weXJpZ2h0IChDKSAyMDE3IExpbnVzIFdhbGxlaWogXHUwMDNjbGludXMud2FsbGVpakBsaW5hcm8ub3JnXHUwMDNlXG4gIDIyOlx0ICogQ29weXJpZ2h0IChDKSAyMDEwIEFudHRpIFNlcHDDpGzDpCBcdTAwM2NhLnNlcHBhbGFAZ21haWwuY29tXHUwMDNlXG4gIDIzOlx0ICogQ29weXJpZ2h0IChDKSAyMDEwIFJvbWFuIFllcnlvbWluIFx1MDAzY3JvbWFuQGFkdmVtLmx2XHUwMDNlXG4gIDI0Olx0ICogQ29weXJpZ2h0IChDKSAyMDExIENvbGluIExlaXRuZXIgXHUwMDNjY29saW4ubGVpdG5lckBnb29nbGVtYWlsLmNvbVx1MDAzZVxuICAyNTpcdCAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIEdhYm9yIEp1aG9zIFx1MDAzY2p1aG9zZ0BvcGVud3J0Lm9yZ1x1MDAzZVxuICAyNjpcdCAqL1xuICAyNzpcdFxuICAyODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDI5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMzA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuICAzMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2VcbiAgMzI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuICAzMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiAgMzQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gIDM1Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZ3Bpby9jb25zdW1lci5oXHUwMDNlXG4gIDM2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcdTAwM2VcbiAgMzc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAzODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2JpdG9wcy5oXHUwMDNlXG4gIDM5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcdTAwM2VcbiAgNDA6XHRcbiAgNDE6XHQjaW5jbHVkZSBcJiMzNDtyZWFsdGVrLmhcJiMzNDtcbiAgNDI6XHQjaW5jbHVkZSBcJiMzNDtyZWFsdGVrLXNtaS5oXCYjMzQ7XG4gIDQzOlx0I2luY2x1ZGUgXCYjMzQ7cnRsODN4eC5oXCYjMzQ7XG4gIDQ0Olx0XG4gIDQ1Olx0I2RlZmluZSBSRUFMVEVLX1NNSV9BQ0tfUkVUUllfQ09VTlRcdFx0NVxuICA0NjpcdFxuICA0NzpcdHN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiAgNDg6XHR7XG4gIDQ5Olx0XHRuZGVsYXkocHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWNsa19kZWxheSk7XG4gIDUwOlx0fVxuICA1MTpcdFxuICA1MjpcdHN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0YXJ0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gIDUzOlx0e1xuICA1NDpcdFx0LyogU2V0IEdQSU8gcGlucyB0byBvdXRwdXQgbW9kZSwgd2l0aCBpbml0aWFsIHN0YXRlOlxuICA1NTpcdFx0ICogU0NLID0gMCwgU0RBID0gMVxuICA1NjpcdFx0ICovXG4gIDU3Olx0XHRncGlvZF9kaXJlY3Rpb25fb3V0cHV0KHByaXYtXHUwMDNlbWRjLCAwKTtcbiAgNTg6XHRcdGdwaW9kX2RpcmVjdGlvbl9vdXRwdXQocHJpdi1cdTAwM2VtZGlvLCAxKTtcbiAgNTk6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbiAgNjA6XHRcbiAgNjE6XHRcdC8qIENMSyAxOiAwIC1cdTAwM2UgMSwgMSAtXHUwMDNlIDAgKi9cbiAgNjI6XHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG4gIDYzOlx0XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG4gIDY0Olx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDApO1xuICA2NTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuICA2NjpcdFxuICA2NzpcdFx0LyogQ0xLIDI6ICovXG4gIDY4Olx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuICA2OTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuICA3MDpcdFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMCk7XG4gIDcxOlx0XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG4gIDcyOlx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDApO1xuICA3MzpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuICA3NDpcdFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMSk7XG4gIDc1Olx0fVxuICA3NjpcdFxuICA3NzpcdHN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiAgNzg6XHR7XG4gIDc5Olx0XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG4gIDgwOlx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3ODMKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogNTkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFRoZSBSVEw4MzY1TUIgRHJpdmVyIGlzIE5vdCBGdXp6YWJsZSBpbiBTdGFuZGFyZCBFbnZpcm9ubWVudHMqKgoKT2theSwgaGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBSZWFsdGVrIHN3aXRjaCBkcml2ZXIsIGBydGw4MzY1bWJfbWFpbi5jYCwgaXMgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC4KCkZpcnN0LCBJIHNlZSB0aGF0IHRoZSBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggYSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDLiBJdCB1c2VzIGVpdGhlciB0aGUgcHJvcHJpZXRhcnkgU01JIHByb3RvY29sIChiaXQtYmFuZ2VkIEdQSU8gbGluZXMsIE1EQy9NRElPKSBvciB0aGUgc3RhbmRhcmQgTURJTyBidXMuIEJvdGggY29tbXVuaWNhdGlvbiBtZXRob2RzIHJlbHkgb24gT0YgKERldmljZSBUcmVlKSBiaW5kaW5ncywgd2hpY2ggaXMgdHlwaWNhbCBmb3IgZW1iZWRkZWQgc3lzdGVtcyBsaWtlIEFSTS9NSVBTIHJvdXRlcnMgd2hlcmUgdGhlc2Ugc3dpdGNoZXMgYXJlIGNvbW1vbmx5IHVzZWQuIFRoYXQgYWxvbmUgaXMgYSByZWQgZmxhZywgYXMgSSBrbm93IG91ciBmdXp6aW5nIGhlYXZpbHkgcmVsaWVzIG9uIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KCkkga25vdyB0aGF0IGFtZDY0IHN5c3RlbXMsIGFuZCBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsIG1hY2hpbmVzLCBkb24mIzM5O3QgaGF2ZSBhIERldmljZSBUcmVlIGJpbmRpbmcgb3IgYSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDIHRvIHRhbGsgdG8uIEV2ZW4gKmlmKiBJIGNvdWxkIGZvcmNlIGBDT05GSUdfT0ZgIHRvIGJlIGNvbXBpbGVkIG9uIGFtZDY0LCB0aGVyZSBpc24mIzM5O3QgYSB2aXJ0dWFsIGRldmljZSBvciBhIG1vY2sgZHJpdmVyIHRvIGluc3RhbnRpYXRlIG9yIGVtdWxhdGUgdGhpcyBzd2l0Y2guIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgZGVhZCBlbmQuCgpOb3csIGxldCYjMzk7cyBjb25maXJtIHRoaXMgdXNpbmcgdGhlIHRyaWFnZSBndWlkZWxpbmVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9sbG93aW5nIHRoZSBydWxlcyBoZXJlLgoKSSBnbyBiYWNrIHRvIHRoZSByZWFjaGFiaWxpdHkgZ3VpZGVsaW5lcy4gVGhlIHByaW1hcnkgZ2F0ZSBpcyByZWFjaGFiaWxpdHkuIFRoZSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgc3RhdGUgdGhhdCBmdXp6aW5nIGlzIG9ubHkgYXBwcm9wcmlhdGUgZm9yIGNvZGUgdGhhdCBjYW4gKmV4ZWN1dGUqIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQ29kZSB0aGF0JiMzOTtzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBnZXRzIGEgaGFyZCBwYXNzLiBGdXJ0aGVybW9yZSwgdGhlIGd1aWRlbGluZXMgbGlzdCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhcyBleGFtcGxlcyBvZiB1bnJlYWNoYWJsZSBjb2RlLiBTb3VuZHMgZmFtaWxpYXIuLi4KClRoZSBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlciAqYWJzb2x1dGVseSogZml0cyB0aGlzIGRlc2NyaXB0aW9uLiBJdCYjMzk7cyBmb3IgYSBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggQVNJQyAoUmVhbHRlayBSVEw4MzY1TUIvUlRMODM2N1MpLCBjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPLCBhcyBkZXNjcmliZWQgaW4gdGhlIERldmljZSBUcmVlLCBhbmQgbm9uZSBvZiB0aGlzIGV4aXN0cyBpbiBhIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50LiBJdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLgoKVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBpcyB1bmVxdWl2b2NhbGx5IGBmYWxzZWAuCgpIZXJlJiMzOTtzIGEgY2xlYXIgc3RydWN0dXJlIGZvciB0aGUgcmVzcG9uc2U6CgoxLiAgKipXb3J0aEZ1enppbmc6KiogYGZhbHNlYAoyLiAgKipGb2N1c1N5bWJvbHM6KiogYFtdYCAoTm90aGluZyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QpCjMuICAqKkVuYWJsZUNvbmZpZ3M6KiogYFtdYCAoTm8gc3BlY2lmaWMgY29uZmlncyBuZWVkZWQpCjQuICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggdG91Y2hlcyBgcnRsODM2NW1iX3Jlc2V0X2NoaXAoKWAgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYC4gVGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgZHJpdmVyIGZvciBSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBBU0lDcyAoUlRMODM2NU1CL1JUTDgzNjdTKSB0aGF0IGFyZSBjb25uZWN0ZWQgdmlhIFNNSSBvciBNRElPIGJ1cy4gVGhpcyBzZXR1cCByZWxpZXMgb24gRGV2aWNlIFRyZWUtYmFzZWQgZW1iZWRkZWQgc3lzdGVtcyBhbmQgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIG9uIGFtZDY0LiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcgZHVlIHRvIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjaGlwIHJlc2V0IGxvZ2ljIGFuZCB0aW1pbmcgaW4gcnRsODM2NW1iX3Jlc2V0X2NoaXAoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDcyBhdHRhY2hlZCB2aWEgU01JIG9yIE1ESU8gYnVzZXMgZGVmaW5lZCB2aWEgRGV2aWNlIFRyZWUgKE9GKSwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjaGlwIHJlc2V0IGxvZ2ljIGFuZCB0aW1pbmcgaW4gcnRsODM2NW1iX3Jlc2V0X2NoaXAoKSB3aXRoaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIERTQSBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDcyBhdHRhY2hlZCB2aWEgU01JIG9yIE1ESU8gYnVzZXMgZGVmaW5lZCB2aWEgRGV2aWNlIFRyZWUgKE9GKSwgd2hpY2ggYXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzEuNjI1NjY1MjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzYxOTAzMzQyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjMxLjYyNTY3MDQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM2NTY1MTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTQxNGMxNTU0MTRkYzMwZmFjNTYyZTQyYTY4MTUyYzY0ZGZmM2FhM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIFNlcCA5IDEyOjU2OjMwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXFxuaW5kZXggZjgyMjBkODMyZTQ2MC4uMTllMmNmNjA1ZDRlNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbkBAIC0xMzYsNiArMTM2LDkgQEBcXG4gI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9TV19NQVNLXFx0MHgwMDAyXFxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1xcdDB4MDAwMVxcbiBcXG4rLyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovXFxuKyNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfVElNRV9NU1xcdDEwMDBcXG4rXFxuIC8qIEludGVycnVwdCBwb2xhcml0eSByZWdpc3RlciAqL1xcbiAjZGVmaW5lIFJUTDgzNjVNQl9JTlRSX1BPTEFSSVRZX1JFR1xcdDB4MTEwMFxcbiAjZGVmaW5lICAgUlRMODM2NU1CX0lOVFJfUE9MQVJJVFlfTUFTS1xcdDB4MDAwMVxcbkBAIC0yOTgxLDE3ICsyOTg0LDI3IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4ge1xcbiBcXHR1MzIgdmFsO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNld3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRyxcXG4gXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLLCAxKSk7XFxuIFxcbi1cXHQvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXBcXG4tXFx0ICogZm9yIDEwMCBtcyBiZWZvcmUgYWNjZXNzaW5nIGFueSByZWdpc3RlcnMgdG8gcHJldmVudCBBQ0sgdGltZW91dHMuXFxuK1xcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGVcXG4rXFx0ICogcmVzZXQgYml0IGNsZWFycyBiZWZvcmUgdGhhdCB0aW1lIGlzIHVwLCBhbmQgaXQgb25seSByZXBvcnRzIHRoYXRcXG4rXFx0ICogdGhlIHJlZ2lzdGVyIGJsb2NrIGlzIGJhY2ssIG5vdCB0aGF0IHRoZSBjaGlwIGhhcyBmaW5pc2hlZCBpdHNcXG4rXFx0ICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nXFxuK1xcdCAqIGFueXRoaW5nLlxcbiBcXHQgKi9cXG4tXFx0bXNsZWVwKDEwMCk7XFxuLVxcdHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCxcXG4tXFx0XFx0XFx0XFx0XFx0ISh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcXG4tXFx0XFx0XFx0XFx0XFx0MjAwMDAsIDFlNik7XFxuK1xcdG1zbGVlcChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcXG4rXFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXFx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCBcXHUwMDI2dmFsKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdGlmICh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKVxcbitcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjMyLjk2Mjk0MzkzMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NDYyODE3NDIxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTQxNGMxNTU0MTRkYzMwZmFjNTYyZTQyYTY4MTUyYzY0ZGZmM2FhM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDkgMTI6NTY6MzAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggZjgyMjBkODMyZTQ2MC4uMTllMmNmNjA1ZDRlNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMzYsNiArMTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4rLyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovXG4rI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TXHQxMDAwXG4rXG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgxLDE3ICsyOTg0LDI3IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gc3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIHtcbiBcdHUzMiB2YWw7XG4rXHRpbnQgcmV0O1xuIFxuIFx0cHJpdi1cdTAwM2V3cml0ZV9yZWdfbm9hY2socHJpdiwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLFxuIFx0XHRcdCAgICAgIEZJRUxEX1BSRVAoUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSywgMSkpO1xuIFxuLVx0LyogUmVhbHRlayBkb2N1bWVudGF0aW9uIHNheXMgdGhlIGNoaXAgbmVlZHMgMSBzZWNvbmQgdG8gcmVzZXQuIFNsZWVwXG4tXHQgKiBmb3IgMTAwIG1zIGJlZm9yZSBhY2Nlc3NpbmcgYW55IHJlZ2lzdGVycyB0byBwcmV2ZW50IEFDSyB0aW1lb3V0cy5cbitcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBUaGVcbitcdCAqIHJlc2V0IGJpdCBjbGVhcnMgYmVmb3JlIHRoYXQgdGltZSBpcyB1cCwgYW5kIGl0IG9ubHkgcmVwb3J0cyB0aGF0XG4rXHQgKiB0aGUgcmVnaXN0ZXIgYmxvY2sgaXMgYmFjaywgbm90IHRoYXQgdGhlIGNoaXAgaGFzIGZpbmlzaGVkIGl0c1xuK1x0ICogaW50ZXJuYWwgYnJpbmctdXAsIHNvIHdhaXQgb3V0IHRoZSBkb2N1bWVudGVkIHRpbWUgYmVmb3JlIHRvdWNoaW5nXG4rXHQgKiBhbnl0aGluZy5cbiBcdCAqL1xuLVx0bXNsZWVwKDEwMCk7XG4tXHRyZXR1cm4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCxcbi1cdFx0XHRcdFx0ISh2YWwgXHUwMDI2IFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0spLFxuLVx0XHRcdFx0XHQyMDAwMCwgMWU2KTtcbitcdG1zbGVlcChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcbitcbitcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIFx1MDAyNnZhbCk7XG4rXHRpZiAocmV0KVxuK1x0XHRyZXR1cm4gcmV0O1xuK1xuK1x0aWYgKHZhbCBcdTAwMjYgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSylcbitcdFx0cmV0dXJuIC1FVElNRURPVVQ7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzIuOTYyOTQ2MzIyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDcxNzAyNjYwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWFsdGVrIFJUTDgzNjVNQiBEU0EgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIEknbSBsb29raW5nIGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGludm9sdmVzIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiwgYW5kIHRoYXQgaXQncyBpbnRlcmFjdGluZyB3aXRoIHRoZSBEYXRhIFN3aXRjaGluZyBBcmNoaXRlY3R1cmUgKERTQSkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIHZlcmlmeSB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIEFoLCBpdCdzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCBpbiB0aGF0IHNhbWUgZmlsZS4gVGhpcyBkcml2ZXIgbXVzdCBoYW5kbGUgdGhlIHJlc2V0IGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIHByZXR0eSBmdW5kYW1lbnRhbC5cblxuTm93LCBpdCdzIHRpbWUgdG8gZGlnIGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyBkcml2ZXIuIElzIGl0IGZvciBhIGNvbW1vbmx5IHVzZWQgc3dpdGNoPyBPciBpcyBpdCBwYXJ0IG9mIHNvbWUgbW9yZSBzcGVjaWFsaXplZCBoYXJkd2FyZT8gR2l2ZW4gdGhhdCBpdCdzIGEgRFNBIHN3aXRjaCBkcml2ZXIgZm9yIHRoZSBSVEw4MzY1TUIsIEkgaGF2ZSBhIHByZXR0eSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSByZWFjaGFiaWxpdHkgYW5kIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS4gSXMgdGhpcyBjb2RlIGFjdGl2ZWx5IHVzZWQsIG9yIGlzIGl0IHBvdGVudGlhbGx5IGRlYWQgY29kZT9cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCBJJ2xsIHN0YXJ0IGJ5IGdyZXBwaW5nIHRoZSBjb2RlIGZvciB1c2FnZSBhbmQgY29uZmlndXJhdGlvbnMsIGFuZCByZWFkIHRoZSByZWxldmFudCBmaWxlcyDigJMgS2NvbmZpZywgcHJvYmFibHkuIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBhbmQgc2VlIHdoZXJlIHRoaXMgZHJpdmVyIGZpdHMgaW4gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzcuNjc5OTc1OTE2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTkzNjM0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9EU0FfUkVBTFRFS1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc9MTY9aWYgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjE4OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTktXFx0Ym9vbCBcXFwiUmVhbHRlayBNRElPIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI1OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozMjpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgUlRMODM2NU1CIHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTM4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6Mzk6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ2OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQ3LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTY6MzkuMjc5MzQ3ODg2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQwMzM0NDk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBLY29uZmlnIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIFJlYWx0ZWsgRFNBIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucyDigJMgb3IgYXQgbGVhc3QsIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBSZWFsdGVrIERTQSAoRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSkgZHJpdmVyIHdpdGhpbiB0aGUga2VybmVsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBiZWluZyBjb250cm9sbGVkIGhlcmUsIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHVzLCBhbmQgaG93IHdlIGNhbiBiZXN0IGxldmVyYWdlIHRoZW0gZm9yIHNwZWNpZmljIHVzZSBjYXNlcy4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yOlxuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBrZXJuZWwgY29tcG9uZW50cyBvciBvcHRpb25zIGRvZXMgdGhpcyBkZXBlbmQgb24/IEFyZSB0aGVyZSBzcGVjaWZpYyBuZXR3b3JrIHN1YnN5c3RlbXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgaXQgcmVxdWlyZXM/IElkZW50aWZ5aW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhIHNtb290aCBpbnRlZ3JhdGlvbiBhbmQgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgY29uZmxpY3RzLlxuKiAgICoqRmVhdHVyZSBDb250cm9sOioqIFdoYXQgc3BlY2lmaWMgUmVhbHRlayBzd2l0Y2ggZmVhdHVyZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGlzIEtjb25maWcgZmlsZT8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYmFzaWMgdGhpbmdzIGxpa2UgcG9ydCBjb25maWd1cmF0aW9uIChzcGVlZCwgZHVwbGV4KSwgVkxBTiBzdXBwb3J0LCBRb1MgY2FwYWJpbGl0aWVzLCBvciBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgdHJhZmZpYyBzaGFwaW5nIGFuZCBtaXJyb3Jpbmc/IFRoZSBncmFudWxhcml0eSBvZiBjb250cm9sIGlzIGtleS5cbiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQgYXJlIHRoZSBkZWZhdWx0IHNldHRpbmdzIGZvciBlYWNoIG9wdGlvbj8gS25vd2luZyB0aGUgZGVmYXVsdHMgcHJvdmlkZXMgY29udGV4dCwgcGFydGljdWxhcmx5IHdoZW4gaW52ZXN0aWdhdGluZyBwb3RlbnRpYWwgaXNzdWVzIG9yIGN1c3RvbWl6aW5nIHRoZSBkcml2ZXIgZm9yIGEgc3BlY2lmaWMgYm9hcmQgb3IgbmV0d29yayBzZXR1cC5cbiogICAqKkhlbHAgVGV4dDoqKiBIb3BlZnVsbHksIHRoZSBLY29uZmlnIGZpbGUgaGFzIGdvb2QsIGRlc2NyaXB0aXZlIGhlbHAgdGV4dC4gVGhpcyBpcyBhIHZpdGFsIHJlc291cmNlIGZvciBhbnlvbmUgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgZWFjaCBvcHRpb24uIENsZWFyIGFuZCBjb25jaXNlIGV4cGxhbmF0aW9ucyBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIGd1ZXNzd29yay5cbiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGBpZmAgc3RhdGVtZW50cyBvciBvdGhlciBjb25kaXRpb25hbCBsb2dpYy4gVGhpcyB3aWxsIHNob3cgaG93IG9wdGlvbnMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYmFzZWQgb24gb3RoZXIga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGhhcmR3YXJlIGNvbnN0cmFpbnRzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGRpZmZlcmVudCBSZWFsdGVrIHN3aXRjaCBtb2RlbHMgb3IgZHJpdmVyIHZlcnNpb25zIGFyZSBoYW5kbGVkLlxuKiAgICoqSW50ZWdyYXRpb24gUG9pbnRzOioqIEknbGwgYmUgZ2xhbmNpbmcgZm9yIGFueSByZWZlcmVuY2VzIHRvIG90aGVyIEtjb25maWcgZmlsZXMgb3IgZHJpdmVyIGNvbXBvbmVudHMuIFRoaXMgbWF5IGhlbHAgaW4gaWRlbnRpZnlpbmcgcG90ZW50aWFsIGludGVncmF0aW9uIHBvaW50cywgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbmV0d29yayBzdWJzeXN0ZW1zIG9yIGRlcGVuZGVuY2llcyBvbiBvdGhlciBSZWFsdGVrIGNvbXBvbmVudHMuXG5cbkVzc2VudGlhbGx5LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBmb3IgdGhpcyBkcml2ZXIgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay4gVGhlIEtjb25maWcgZmlsZSBpcyB0aGUgcm9hZG1hcC4gTm93LCBsZXQncyBnZXQgcmVhZGluZyBhbmQgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3MCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQyLjY4MjY5NTY3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FcXG4gICA1OlxcdFxcdHNlbGVjdCBGSVhFRF9QSFlcXG4gICA2OlxcdFxcdHNlbGVjdCBJUlFfRE9NQUlOXFxuICAgNzpcXHRcXHRzZWxlY3QgUkVBTFRFS19QSFlcXG4gICA4OlxcdFxcdHNlbGVjdCBSRUdNQVBcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBjaGlwcy5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgYXQgbGVhc3Qgb25lIGludGVyZmFjZSBkcml2ZXIgbXVzdCBiZSBlbmFibGVkIGZvciB0aGVcXG4gIDEzOlxcdFxcdCAgc3ViZHJpdmVycyB0byBiZSBsb2FkZWQuIE1vcmVvdmVyLCBhbiBpbnRlcmZhY2UgZHJpdmVyIGNhbm5vdCBhY2hpZXZlXFxuICAxNDpcXHRcXHQgIGFueXRoaW5nIHdpdGhvdXQgYXQgbGVhc3Qgb25lIHN1YmRyaXZlciBlbmFibGVkLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRpZiBORVRfRFNBX1JFQUxURUtcXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19NRElPXFxuICAxOTpcXHRcXHRib29sIFxcXCJSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIE9GXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZFxcbiAgMjM6XFx0XFx0ICB0aHJvdWdoIE1ESU8uXFxuICAyNDpcXHRcXG4gIDI1OlxcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXFxuICAyNjpcXHRcXHRib29sIFxcXCJSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFxcXCJcXG4gIDI3OlxcdFxcdGRlcGVuZHMgb24gT0ZcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25uZWN0ZWRcXG4gIDMwOlxcdFxcdCAgdGhyb3VnaCBTTUkuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXFxuICAzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclxcXCJcXG4gIDM0OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDhfNFxcbiAgMzY6XFx0XFx0aGVscFxcbiAgMzc6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIFJlYWx0ZWsgUlRMODM2NU1CLVZDIGFuZCBSVEw4MzY3Uy5cXG4gIDM4OlxcdFxcbiAgMzk6XFx0Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG4gIDQwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIFJUTDgzNjZSQiBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX1JFQUxURUtfU01JIHx8IE5FVF9EU0FfUkVBTFRFS19NRElPXFxuICA0MjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMNF9BXFxuICA0MzpcXHRcXHRoZWxwXFxuICA0NDpcXHRcXHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgUmVhbHRlayBSVEw4MzY2UkIuXFxuICA0NTpcXHRcXG4gIDQ2OlxcdGNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG4gIDQ3OlxcdFxcdGJvb2xcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gKExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG4gIDUwOlxcdFxcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxcbiAgNTE6XFx0XFxuICA1MjpcXHRlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjo1Njo0Mi42ODI3NTc4NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODkyODUwMzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIFJUTDgzNjVNQiBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgcnRsODM2NW1iX21haW4uY2AgZHJpdmVyIGlzIGluaXRpYWxpemVkIGFuZCBwcm9iZWQuIE15IHByaW1hcnkgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgaXRzIG9wZXJhdGlvbiBoaW5nZXMgb24gcGFydGljdWxhciBwaHlzaWNhbCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgcGVyaGFwcyByZXF1aXJpbmcgRGV2aWNlIFRyZWUgKE9GKSwgdGhlIE1ESU8gYnVzLCBvciBldmVuIHRoZSBTTUkgYnVzLiBNeSBpbW1lZGlhdGUgY291cnNlIG9mIGFjdGlvbiBpcyB0byBleHBsb3JlIHRoZSByZWxldmFudCBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UncyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2NDcsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ0LjU3NTYxMDYyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJyZWFsdGVrLW1kaW8uY1wiLFxuICAgIFwicmVhbHRlay1tZGlvLmhcIixcbiAgICBcInJlYWx0ZWstc21pLmNcIixcbiAgICBcInJlYWx0ZWstc21pLmhcIixcbiAgICBcInJlYWx0ZWsuaFwiLFxuICAgIFwicnRsODM2NW1iX2wyLmNcIixcbiAgICBcInJ0bDgzNjVtYl9sMi5oXCIsXG4gICAgXCJydGw4MzY1bWJfbWFpbi5jXCIsXG4gICAgXCJydGw4MzY1bWJfdGFibGUuY1wiLFxuICAgIFwicnRsODM2NW1iX3RhYmxlLmhcIixcbiAgICBcInJ0bDgzNjVtYl92bGFuLmNcIixcbiAgICBcInJ0bDgzNjVtYl92bGFuLmhcIixcbiAgICBcInJ0bDgzNjYtY29yZS5jXCIsXG4gICAgXCJydGw4MzY2cmItbGVkcy5jXCIsXG4gICAgXCJydGw4MzY2cmIuY1wiLFxuICAgIFwicnRsODM2NnJiLmhcIixcbiAgICBcInJ0bDgzeHguY1wiLFxuICAgIFwicnRsODN4eC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ0LjU3NTY3NzE5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI5MjM2ODg2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFN3aXRjaCBEcml2ZXIgUHJvYmUgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgUmVhbHRlayBkcml2ZXIgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN3aXRjaCBkZXZpY2VzIGFyZSBiZWluZyBkZXRlY3RlZCBhbmQgaW5pdGlhbGl6ZWQuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBgcnRsODM2NW1iX3Byb2JlYCwgYHJlYWx0ZWtfc21pX3Byb2JlYCwgYW5kIGByZWFsdGVrX21kaW9fcHJvYmVgIGZ1bmN0aW9ucy4gSSdtIGFzc3VtaW5nIHRoYXQgdGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIGRpZmZlcmVudCBSZWFsdGVrIHN3aXRjaCBjaGlwc2V0cywgb3IgcGVyaGFwcyBkaWZmZXJlbnQgaW50ZXJmYWNlcyBsaWtlIFNNSSBvciBNRElPLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LiBXaGF0IGNoZWNrcyBhcmUgdGhleSBwZXJmb3JtaW5nPyBXaGF0IHJlc291cmNlcyBhcmUgdGhleSBhbGxvY2F0aW5nIGFuZCBpbml0aWFsaXppbmc/IEFyZSB0aGV5IHJlbHlpbmcgb24gcGxhdGZvcm0tc3BlY2lmaWMgZGF0YSwgb3IgYXJlIHRoZXJlIG1vcmUgZ2VuZXJpYyBtZXRob2RzIGF0IHBsYXk/IEknbGwgcHJvYmFibHkgbG9vayBmb3IgdGhlIG1hdGNoaW5nIGByZW1vdmVgIGZ1bmN0aW9ucyBzaG9ydGx5IGFmdGVyIHRoaXMgc28gSSBoYXZlIGEgcGljdHVyZSBvZiB0aGUgbGlmZWN5Y2xlLiBJIGV4cGVjdCB0byBiZSBhYmxlIHRvIG1hcCBhIHBhcnRpY3VsYXIgc3dpdGNoIHRvIGVhY2ggb2YgdGhlc2UsIGJ1dCBJIHdvbmRlciBpZiB0aGVyZSBhcmUgb3ZlcmxhcHBpbmcgZnVuY3Rpb25zLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEFyZSB0aGVyZSBhbnkgY29tbW9uIGVycm9yIGhhbmRsaW5nIHBhdHRlcm5zIHRoYXQgSSBjYW4gbGV2ZXJhZ2UgaW4gbXkgY3VycmVudCBwcm9qZWN0PyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gZm9ybSBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiBob3cgdGhlc2UgUmVhbHRlayBzd2l0Y2ggaW50ZXJmYWNlcyBhcmUgZGV0ZWN0ZWQgYW5kIGNvbmZpZ3VyZWQuIExldCdzIHN0YXJ0IHdpdGggdGhlIGZpcnN0IG9uZeKAplxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDgyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ3LjQ5OTM2ODMyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc2NTQ0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydGw4MzY1bWJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjgzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT0xNz1lbmRpZlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSArPSBydGw4MzY1bWIub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE5OnJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIwOlxcdFxcdCAgcnRsODM2NW1iX3RhYmxlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIxOlxcdFxcdCAgcnRsODM2NW1iX3ZsYW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjI6XFx0XFx0ICBydGw4MzY1bWJfbDIubyBcXFxcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjM6IyBlbmQgb2YgcnRsODM2NW1iLW9ianNcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTM9ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5NDpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTk1LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo5OiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDojaW5jbHVkZSBcXFwicnRsODM2NW1iX3RhYmxlLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ21hcC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTI6c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkzLVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMDpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDE6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91Y19rZXkga2V5O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEwMi1cXHR1OCBwb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjExNDpzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTE1LVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEyMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjM6c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTI0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWNfa2V5IGtleTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjUtXFx0dTE2IG1lbWJlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMzQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoY29uc3QgdTE2ICpkYXRhLCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTYzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjE2NDpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfdWNfdG9fZGF0YShjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjICp1YywgdTE2ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMDItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjAzOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyMzE6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYxLS8qXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjYyOiAqIHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YygpIC0gZ2V0IHRoZSBuZXh0IFVuaWNhc3QgTDIgZW50cnlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjMtICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODEtICoqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4MjppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgzLVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4NS1cXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODY6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODctXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg5OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjkwLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgYWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOTY6XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fdWMoZGF0YSwgXFx1MDAyNnVjKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzA1OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMwNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzEwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMjgtXFx0dWMuYWdlID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMjk6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMxLVxcdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMzI6XFx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzMtXFx0XFx0XFx0XFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9XUklURSwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzQ1OmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0Ni1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDktXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzUwOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNTEtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjAtXFx0dWMuYWdlID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNjE6XFx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXFx1MDAyNnVjLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjctXFx0ICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzY4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzY5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzgzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM4NDppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDQ5OmludCBydGw4MzY1bWJfbDJfYWRkX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1MC1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTMtXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDU0OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgbWMgPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTUtXFx0dTE2IGFkZHI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjUtXFx0bWMuaXNfc3RhdGljID0gMTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NjY6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY4LVxcdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ2OTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3MC1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc0LVxcdFxcdC8qIFRoZXJlIGlzIGFscmVhZHkgYW4gZW50cnkuLi4gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NzU6XFx0XFx0cnRsODM2NW1iX2wyX2RhdGFfdG9fbWMoZGF0YSwgXFx1MDAyNm1jKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzYtXFx0XFx0ZGV2X2RiZyhwcml2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00ODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDkwOlxcdFxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDkxLVxcdH0gZWxzZSBpZiAocmV0ID09IC1FTk9FTlQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwNy1cXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTA4OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTA5LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyMDppbnQgcnRsODM2NW1iX2wyX2RlbF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjEtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI0LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyNTpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTI2LVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTMxLVxcdG1jLmtleS5pdmwgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzMjpcXHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcXHUwMDI2bWMsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzQtXFx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTM1OlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM2LVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfUkVBRCwgXFx1MDAyNmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NDktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTUwOlxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFxcdTAwMjZtYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTUxLVxcdGRldl9kYmcocHJpdi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY3LVxcdH1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1Njg6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NjktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcwLVxcdC8qIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTcxOlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcyLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTU6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE2LVxcdFxcdFxcdCAgICAgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTc6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTgtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTktXFx0XFx0XFx0dTE2IGVmaWQsIHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjIwOmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIxLVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTIyLVxcdFxcdFxcdHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMzppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyNTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNi1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjctXFx0XFx0XFx0dTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6Mjg6aW50IHJ0bDgzNjVtYl9sMl9kZWxfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjktXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NC0gKiByZXF1aXJlIHRoZSBydGw4MzY3ZCB2ZW5kb3IgZHJpdmVyLiBXaXRoIGFsbCB0aGlzIHVuY2VydGFpbnR5LCB0aGUgZHJpdmVyIGhhc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU6ICogYmVlbiBtb2Rlc3RseSBuYW1lZCBydGw4MzY1bWIuIEZ1dHVyZSBpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gcmVuYW1lIHRoaW5nc1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYtICogYWNjb3JkaW5nbHkuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwOS0jaW5jbHVkZSBcXFwicnRsODN4eC5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEwOiNpbmNsdWRlIFxcXCJydGw4MzY1bWJfbDIuaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTojaW5jbHVkZSBcXFwicnRsODM2NW1iX3ZsYW4uaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjU5LSAqIDMtYml0IE1TQiBmaWVsZCAoQ1RSTDEpLiBUaGUgY2hpcCByZXNldHMgdGhlbSB0byAweDFGRkZGOyBzZWVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2MDogKiBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yNjEtICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyNy0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfTUFDX0xPT1BCQUNLX01BU0tcXHRcXHQweDAwNDBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQyODovKiBTZWUgXFx1MDAyNnJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjktI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX1ZMQU5fRUdSRVNTX01PREVfTUFTS1xcdFxcdDB4MDAzMFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzItLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0MzM6ICogZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAtIHBvcnQgVkxBTiBlZ3Jlc3MgbW9kZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDM0LSAqIEBSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTDogZm9sbG93IHVudGFnIG1hc2sgaW4gVkxBTjRrIHRhYmxlIGVudHJ5XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0Mi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ0MzplbnVtIHJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC1cXHRSVEw4MzY1TUJfVkxBTl9FR1JFU1NfTU9ERV9PUklHSU5BTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQ4NzplbnVtIHJ0bDgzNjVtYl9taWJfY291bnRlcl9pbmRleCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODgtXFx0UlRMODM2NU1CX01JQl9pZkluT2N0ZXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NDk6c3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTAtXFx0dTMyIG9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTU3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTU4OnN0YXRpYyBzdHJ1Y3QgcnRsODM2NW1iX21pYl9jb3VudGVyIHJ0bDgzNjVtYl9taWJfY291bnRlcnNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1OS1cXHRSVEw4MzY1TUJfTUFLRV9NSUJfQ09VTlRFUigwLCA0LCBpZkluT2N0ZXRzKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjE4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjE5OnN0YXRpY19hc3NlcnQoQVJSQVlfU0laRShydGw4MzY1bWJfbWliX2NvdW50ZXJzKSA9PSBSVEw4MzY1TUJfTUlCX0VORCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MjE6c3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyMi1cXHR1MTYgcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjYtLyogTGlmdGVkIGZyb20gdGhlIHZlbmRvciBkcml2ZXIgc291cmNlcyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjI3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92Y1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjI4LVxcdHsgMHgxM0VCLCAweDE1QkIgfSwgeyAweDEzMDMsIDB4MDZENiB9LCB7IDB4MTMwNCwgMHgwNzAwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYzNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV9jb21tb25bXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNy1cXHR7IDB4MTIwMCwgMHg3RkNCIH0sIHsgMHgwODg0LCAweDAwMDMgfSwgeyAweDA2RUIsIDB4MDAwMSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NDYtICogb3B0aW9uLCB3aGljaCBpcyB3aGF0IFJUTDgzNjdTIHBhcnRzIHNlZW4gc28gZmFyIHJlcG9ydC4gU2VlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDc6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY0OC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY0OTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NTAtXFx0eyAweDA0ODAsIDB4MDRENyB9LCB7IDB4MDQ4MSwgMHhGOTk0IH0sIHsgMHgwNDgyLCAweDI0MjAgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjU4LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU5OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWlbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Mi1cXHR7IDB4MDUwMCwgMHg4MkYwIH0sIHsgMHgwNTAxLCAweEYxOTUgfSwgeyAweDA1MDIsIDB4MzFBMiB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Njc6ZW51bSBydGw4MzY1bWJfcGh5X2ludGVyZmFjZV9tb2RlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2OC1cXHRSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFX0lOVkFMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjc4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njc5OiAqIHN0cnVjdCBydGw4MzY1bWJfZXh0aW50IC0gZXh0ZXJuYWwgaW50ZXJmYWNlIGluZm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4MC0gKiBAcG9ydDogdGhlIHBvcnQgd2l0aCBhbiBleHRlcm5hbCBpbnRlcmZhY2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg0LSAqIFJlcHJlc2VudHMgYSBtYXBwaW5nOiBwb3J0IC1cXHUwMDNlIHsgaWQsIHN1cHBvcnRlZF9pbnRlcmZhY2VzIH0uIFRvIGJlIGVtYmVkZGVkXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2ODU6ICogaW4gXFx1MDAyNnN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIGZvciBldmVyeSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg2LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg3OnN0cnVjdCBydGw4MzY1bWJfZXh0aW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4OC1cXHRpbnQgcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjkzLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njk0OiAqIHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIC0gc3RhdGljIGNoaXAtc3BlY2lmaWMgaW5mb1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LSAqIEBuYW1lOiBodW1hbi1yZWFkYWJsZSBjaGlwIG5hbWVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzAzLSAqIGJ5IHRoaXMgZHJpdmVyLiBXaGVuIGFkZGluZyBzdXBwb3J0IGZvciBhbm90aGVyIGNoaXAgaW4gdGhlIGZhbWlseSwgYSBuZXdcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNDogKiBjaGlwIGluZm8gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBydGw4MzY1bWJfY2hpcF9pbmZvcyBhcnJheS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwNS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNjpzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDctXFx0Y29uc3QgY2hhciAqbmFtZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA5LVxcdHUzMiBjaGlwX3ZlcjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxMDpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCBleHRpbnRzW1JUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzExOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqamFtX3RhYmxlO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzEyLVxcdHNpemVfdCBqYW1fc2l6ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE2LSNkZWZpbmUgUEhZX0lOVEYoX21vZGUpIChSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFXyAjIyBfbW9kZSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gcnRsODM2NW1iX2NoaXBfaW5mb3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxOC1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcyNS1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI2OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzI3OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MjgtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzM3LVxcdFxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mzg6XFx0XFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Mzk6XFx0XFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc0MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NTEtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1MjpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc1MzpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzU0LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2NC1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY1OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzY2OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjctXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzcwOmVudW0gcnRsODM2NW1iX3N0cF9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzEtXFx0UlRMODM2NU1CX1NUUF9TVEFURV9ESVNBQkxFRCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3NzplbnVtIHJ0bDgzNjVtYl9jcHVfaW5zZXJ0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cXHRSVEw4MzY1TUJfQ1BVX0lOU0VSVF9UT19BTEwgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODM6ZW51bSBydGw4MzY1bWJfY3B1X3Bvc2l0aW9uIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4NC1cXHRSVEw4MzY1TUJfQ1BVX1BPU19BRlRFUl9TQSA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc4ODplbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc4OS1cXHRSVEw4MzY1TUJfQ1BVX0ZPUk1BVF84QllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTM6ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5NC1cXHRSVEw4MzY1TUJfQ1BVX1JYTEVOXzcyQllURVMgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3OTk6ICogc3RydWN0IHJ0bDgzNjVtYl9jcHUgLSBDUFUgcG9ydCBjb25maWd1cmF0aW9uXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MDAtICogQGVuYWJsZTogZW5hYmxlL2Rpc2FibGUgaGFyZHdhcmUgaW5zZXJ0aW9uIG9mIENQVSB0YWcgaW4gc3dpdGNoLVxcdTAwM2VDUFUgZnJhbWVzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxMC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxMTpzdHJ1Y3QgcnRsODM2NW1iX2NwdSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTItXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxNC1cXHR1MzIgdHJhcF9wb3J0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE1OlxcdGVudW0gcnRsODM2NW1iX2NwdV9pbnNlcnQgaW5zZXJ0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE2OlxcdGVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiBwb3NpdGlvbjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNzpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfcnhsZW4gcnhfbGVuZ3RoO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE4OlxcdGVudW0gcnRsODM2NW1iX2NwdV9mb3JtYXQgZm9ybWF0O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODE5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMS0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyMjogKiBzdHJ1Y3QgcnRsODM2NW1iX3BvcnQgLSBwcml2YXRlIHBlci1wb3J0IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNC0gKiBAaW5kZXg6IERTQSBwb3J0IGluZGV4LCBzYW1lIGFzIGRzYV9wb3J0OjppbmRleFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI1OiAqIEBzdGF0czogbGluayBzdGF0aXN0aWNzIHBvcHVsYXRlZCBieSBydGw4MzY1bWJfc3RhdHNfcG9sbCwgcmVhZHkgZm9yIGF0b21pY1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI2OiAqICAgICAgICAgYWNjZXNzIHZpYSBydGw4MzY1bWJfZ2V0X3N0YXRzNjRcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyNy0gKiBAc3RhdHNfbG9jazogcHJvdGVjdCB0aGUgc3RhdHMgc3RydWN0dXJlIGR1cmluZyByZWFkL3VwZGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjktICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MzA6c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgzMS1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzgtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4Mzk6ICogc3RydWN0IHJ0bDgzNjVtYiAtIGRyaXZlciBwcml2YXRlIGRhdGFcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg0MC0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUxLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODUyOnN0cnVjdCBydGw4MzY1bWIge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUzLVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTQtXFx0aW50IGlycTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NTpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAqY2hpcF9pbmZvO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU2OlxcdHN0cnVjdCBydGw4MzY1bWJfY3B1IGNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1Ny1cXHRzdHJ1Y3QgbXV0ZXggbWliX2xvY2s7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTg6XFx0c3RydWN0IHJ0bDgzNjVtYl9wb3J0IHBvcnRzW1JUTDgzNjVNQl9NQVhfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1OS1cXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjM6I2RlZmluZSBwY3NfdG9fcnRsODM2NW1iKF9wY3MpIGNvbnRhaW5lcl9vZigoX3BjcyksIHN0cnVjdCBydGw4MzY1bWIsIHBjcylcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg2NC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg2NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NzQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NzUtXFx0XFx0XFx0XFx0ICAgICB1MzIgb2NwX2FkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkwNDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cXHRcXHRcXHRcXHQgIHUzMiBvY3BfYWRkciwgdTE2ICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTI6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTE2OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3ByZXBhcmUocHJpdiwgcGh5LCBvY3BfYWRkcik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTMwOlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk0ODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDktXFx0XFx0XFx0XFx0ICAgdTMyIG9jcF9hZGRyLCB1MTYgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTU2OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk2MDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTYxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk3OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk4MDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk4MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05ODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5OTA6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk5MS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDA0OlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3JlYWQocHJpdiwgcGh5LCBvY3BfYWRkciwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDA1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMTg6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDE5LVxcdFxcdFxcdCAgICAgICB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDMxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAzMjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF93cml0ZShwcml2LCBwaHksIG9jcF9hZGRyLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzMy1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNDUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ3OnJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ4LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNDk6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUwLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNTM6XFx0XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDU0LVxcdFxcdFxcdFxcdTAwMjZtYi1cXHUwMDNlY2hpcF9pbmZvLVxcdTAwM2VleHRpbnRzW2ldO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0xMDY2PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNjc6cnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2woc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNjgtXFx0XFx0XFx0ICAgZW51bSBkc2FfdGFnX3Byb3RvY29sIG1wKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDcwLVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzE6XFx0c3RydWN0IHJ0bDgzNjVtYl9jcHUgKmNwdTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzI6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDgyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4MzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9leHRfY29uZmlnX3JnbWlpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4NC1cXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4NS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDg2OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4NzpcXHRcXHRydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4OC1cXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcXHUwMDI2cHJpdi1cXHUwMDNlZHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMTUtXFx0ICogZm9yY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGludG8gYSBwYXJ0aWN1bGFyIG1vZGUsIHdoaWNoIGlzIGRvbmVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTY6XFx0ICogaW4gdGhlIHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3t1cCxkb3dufSBmdW5jdGlvbnMuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE3LVxcdCAqXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExNjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTY1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc193cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE4NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExODY6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI3LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTIyODpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI5LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMzA6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwcml2LVxcdTAwM2VjaGlwX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjMxOlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjMyLVxcdHUzMiBvcHRpb247XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzMtICogdGhlaXIgbWF4aW11bSBpbiBpdHMgc3dpdGNoIGluaXQsIHVuY29uZGl0aW9uYWxseSBmb3IgdGhlIHdob2xlIGNoaXBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyNzQ6ICogZmFtaWx5LiBUaGUgY2hpcCByZXNldCBpbiBydGw4MzY1bWJfc2V0dXAoKSBwdXRzIHRoZW0gYmFjayB0byB0aGVpciByZXNldFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI3NS0gKiBkZWZhdWx0IG9mIDB4MUZGRkYsIGEgfjEuMDQ4IEdicHMgbGltaXQgd2hpY2ggY2FwcyB0aGUgYWdncmVnYXRlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjgzOnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMDgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzA5OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTAtXFx0XFx0XFx0XFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxMy17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzE0OlxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqc2RzX2phbTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTUtXFx0Y29uc3QgaW50IGlkID0gUlRMODM2NU1CX1NEU19FWFRfSU5URVJGQUNFX0lEO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNjpcXHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHBjc190b19ydGw4MzY1bWIocGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTctXFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMyNi1cXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjc6XFx0XFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX2hzZ21paTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMjg6XFx0XFx0c2RzX2phbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfc2RzX2phbV9oc2dtaWkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMyOS1cXHRcXHRtb2RlID0gUlRMODM2NU1CX0VYVF9QT1JUX01PREVfSFNHTUlJO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMTpcXHRcXHRzZHNfamFtID0gcnRsODM2NW1iX3Nkc19qYW1fc2dtaWk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzMyOlxcdFxcdHNkc19qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX3Nkc19qYW1fc2dtaWkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMy1cXHRcXHRtb2RlID0gUlRMODM2NU1CX0VYVF9QT1JUX01PREVfU0dNSUk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzNjMtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHNkc19qYW1fc2l6ZTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzY0OlxcdFxcdHJldCA9IHJ0bDgzNjVtYl9zZHNfd3JpdGUocHJpdiwgc2RzX2phbVtpXS5yZWcsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzY1LVxcdFxcdFxcdFxcdFxcdCAgc2RzX2phbVtpXS52YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzkwLVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM5MTpcXHRyZXQgPSBydGw4MzY1bWJfc2RzX3dyaXRlKHByaXYsIFJUTDgzNjVNQl9TRFNfUkVHX1JFU0VULFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5Mi1cXHRcXHRcXHRcXHQgIFJUTDgzNjVNQl9TRFNfUkVTRVRfREVBU1NFUlQpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjQ3LjU0NTE0Mjk3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDgxMjM5NzU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHJ0bDgzNjVtYl9tYWluLmNgIGZpbGUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgY29kZSBzdXJyb3VuZGluZyB0aGUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBhbmQgYHJ0bDgzNjVtYl9wcm9iZWAgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBjaGlwIGluaXRpYWxpemF0aW9uIGFuZCByZXNldCBzZXF1ZW5jZXMgYXJlIGhhbmRsZWQgaW4gdGhpcyBkcml2ZXIuIEknbSBhc3N1bWluZywgZ2l2ZW4gdGhlIG5hbWluZywgdGhhdCBgcnRsODM2NW1iX3Byb2JlYCBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZWN0aW5nIGFuZCBpbml0aWFsaXppbmcgdGhlIGhhcmR3YXJlLCB3aGljaCB3b3VsZCBsaWtlbHkgbWVhbiBhbGxvY2F0aW5nIHJlc291cmNlcywgY29uZmlndXJpbmcgdGhlIEkvTywgYW5kIHByb2JhYmx5IGNhbGxpbmcgc29tZSBraW5kIG9mIGxvdy1sZXZlbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLiBBbmQgdGhhdCByb3V0aW5lIHdvdWxkIGFsbW9zdCBjZXJ0YWlubHkgYmUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYC4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgIEhvdyBpcyB0aGUgY2hpcCBhY3R1YWxseSBkZXRlY3RlZD8gSXMgaXQgSTJDLCBTUEksIG9yIHNvbWUgb3RoZXIgaW50ZXJmYWNlP1xuKiAgIFdoYXQgY2hlY2tzIGFyZSBwZXJmb3JtZWQgZHVyaW5nIHByb2JpbmcgdG8gZW5zdXJlIHRoZSBjaGlwIGlzIGEgdmFsaWQgUlRMODM2NU1CPyBWZW5kb3IgSUQsIERldmljZSBJRCwgZXRjLlxuKiAgIEFyZSB0aGVyZSBhbnkgY3JpdGljYWwgcmVnaXN0ZXIgYWNjZXNzZXMgdGhhdCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY2hpcCBpcyBhY2Nlc3NpYmxlP1xuKiAgIFdoYXQgcmVzb3VyY2VzIGFyZSBiZWluZyByZXF1ZXN0ZWQvYWxsb2NhdGVkIGR1cmluZyBwcm9iZSwgbGlrZSBtZW1vcnkgcmVnaW9ucywgSVJRcywgZXRjP1xuKiAgIEhvdyBkb2VzIHRoZSByZXNldCBmdW5jdGlvbiB3b3JrPyBJcyBpdCBhIGhhcmQgcmVzZXQ/IFNvZnR3YXJlIHJlc2V0PyBXaGF0IHJlZ2lzdGVyIG1hbmlwdWxhdGlvbnMgYXJlIGludm9sdmVkP1xuKiAgIFdoYXQgZXJyb3IgaGFuZGxpbmcgaXMgaW4gcGxhY2U/IEFyZSB0aGVyZSByZXRyaWVzPyBUaW1lb3V0IG1lY2hhbmlzbXM/XG4qICAgSSB3YW50IHRvIHNlZSB0aGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgZXhhY3Qgb3JkZXIgd2lsbCBiZSBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNoaXAncyBwb3dlci11cCBhbmQgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cblxuSSBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLiBJIHN1c3BlY3QgdGhlIGByZXNldF9jaGlwYCBmdW5jdGlvbiBpcyBhIGNvcmUgZnVuY3Rpb24sIG1lYW5pbmcgaXQncyBsaWtlbHkgYSBzZXJpZXMgb2YgZGlyZWN0IHJlZ2lzdGVyIHJlYWRzIGFuZCB3cml0ZXMuIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gaG93IGVycm9yIGNvZGVzIGFyZSBoYW5kbGVkIGJldHdlZW4gdGhlIHR3byByb3V0aW5lcy4gSSdtIGV4cGVjdGluZyBzb21lIHByZXR0eSBsb3ctbGV2ZWwgc3R1ZmYgaGVyZSwgbGlrZWx5IGJpdCBtYW5pcHVsYXRpb24gYW5kIGRpcmVjdCByZWdpc3RlciBhZGRyZXNzZXMsIGhvcGVmdWxseSwgaXTigJlzIG5vdCB0b28gb2JmdXNjYXRlZC4gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGNvZGUgZm9sbG93cyB0aGUgZXhwZWN0ZWQgcGF0dGVybnMgb3IgaWYgdGhlcmUgYXJlIGFueSB1bnVzdWFsIGFwcHJvYWNoZXMuIFRoaXMgaXMgd2hlcmUgSSBjYW4gc3RhcnQgYnVpbGRpbmcgbXkgaHlwb3RoZXNpcyBvbiBob3cgdGhlIG92ZXJhbGwgc3lzdGVtIHdvcmtzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjMxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU2OjU4LjM1NzU0MzYyNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzODg4MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX3ZhcmlhbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5Mz1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTk0OmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzNTA9c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJ0bDgzNjVtYl9zdXBwbGllc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzUzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM1NDpjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM1NS1cXHQuZHNfb3BzID0gXFx1MDAyNnJ0bDgzNjVtYl9zd2l0Y2hfb3BzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzY2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0bDgzNjVtYl9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM2NzpcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsODM2NW1iXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzY4LVxcdHsgLyogc2VudGluZWwgKi8gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjo1Njo1OC40MDE5MzgxODlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE5MjYzOTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBydGw4MzY1bWIgQ29kZSBVc2FnZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiBgcnRsODM2NW1iX3ZhcmlhbnRgIGFuZCBgcnRsODM2NW1iX29mX21hdGNoYC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoZSBkcml2ZXIuIE15IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgcnRsODM2NW1iX21haW4uY2AgZmlsZSBhbmQgYWxzbyBsb29rIGZvciBhbnkgY3Jvc3MtcmVmZXJlbmNlcyBpbiBmaWxlcyByZWxhdGVkIHRvIHRoZSBTTUkgb3IgTURJTyBpbnRlcmZhY2VzIGxpa2UgYHJlYWx0ZWstc21pLmNgIG9yIGByZWFsdGVrLW1kaW8uY2AuIFRoaXMgaXMgbXkgdXN1YWwgcHJvY2VzcyB3aGVuIEkgYW0gdW5kZXJzdGFuZGluZyB0aGUgZnVuY3Rpb24gb2Ygc3BlY2lmaWMgdmFyaWFibGVzIGluIHRoZXNlIGRyaXZlcnMuIEJ5IGxvb2tpbmcgYXQgd2hlcmUgdGhlc2UgYXJlIGRlY2xhcmVkIGFuZCB3aGVyZSB0aGV5IGFyZSB1c2VkLCBJIGNhbiBnZXQgYSBnb29kIGZlZWwgZm9yIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBSZWFsdGVrIHN3aXRjaCBkcml2ZXIgZWNvc3lzdGVtLiBUaW1lIHRvIGdldCB0byBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNDYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjo1NzowMy41OTQ1ODEwNDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM1MDpcXHRzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgcnRsODM2NW1iX3N1cHBsaWVzW10gPSB7XFxuMzM1MTpcXHRcXHRcXFwiYXZkZGhcXFwiLCBcXFwiYXZkZGxcXFwiLCBcXFwiZHZkZGlvXFxcIiwgXFxcImR2ZGRpbzFcXFwiLCBcXFwiZHZkZGxcXFwiLCBcXFwicGxsdmRkbFxcXCIsXFxuMzM1MjpcXHR9O1xcbjMzNTM6XFx0XFxuMzM1NDpcXHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xcbjMzNTU6XFx0XFx0LmRzX29wcyA9IFxcdTAwMjZydGw4MzY1bWJfc3dpdGNoX29wcyxcXG4zMzU2OlxcdFxcdC5vcHMgPSBcXHUwMDI2cnRsODM2NW1iX29wcyxcXG4zMzU3OlxcdFxcdC5waHlsaW5rX21hY19vcHMgPSBcXHUwMDI2cnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyxcXG4zMzU4OlxcdFxcdC5jbGtfZGVsYXkgPSAxMCxcXG4zMzU5OlxcdFxcdC5jbWRfcmVhZCA9IDB4YjksXFxuMzM2MDpcXHRcXHQuY21kX3dyaXRlID0gMHhiOCxcXG4zMzYxOlxcdFxcdC5jaGlwX2RhdGFfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgzNjVtYiksXFxuMzM2MjpcXHRcXHQuc3VwcGxpZXMgPSBydGw4MzY1bWJfc3VwcGxpZXMsXFxuMzM2MzpcXHRcXHQubnVtX3N1cHBsaWVzID0gQVJSQVlfU0laRShydGw4MzY1bWJfc3VwcGxpZXMpLFxcbjMzNjQ6XFx0fTtcXG4zMzY1OlxcdFxcbjMzNjY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XFxuMzM2NzpcXHRcXHR7IC5jb21wYXRpYmxlID0gXFxcInJlYWx0ZWsscnRsODM2NW1iXFxcIiwgLmRhdGEgPSBcXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXFxuMzM2ODpcXHRcXHR7IC8qIHNlbnRpbmVsICovIH1cXG4zMzY5OlxcdH07XFxuMzM3MDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBydGw4MzY1bWJfb2ZfbWF0Y2gpO1xcbjMzNzE6XFx0XFxuMzM3MjpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4zMzczOlxcdFxcdC5kcml2ZXIgPSB7XFxuMzM3NDpcXHRcXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG4zMzc1OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzc2OlxcdFxcdH0sXFxuMzM3NzpcXHRcXHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXFxuMzM3ODpcXHRcXHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxcbjMzNzk6XFx0XFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXFxuMzM4MDpcXHR9O1xcbjMzODE6XFx0XFxuMzM4MjpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcXG4zMzgzOlxcdFxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG4zMzg0OlxcdFxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG4zMzg1OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzg2OlxcdFxcdH0sXFxuMzM4NzpcXHRcXHQucHJvYmUgID0gcmVhbHRla19tZGlvX3Byb2JlLFxcbjMzODg6XFx0XFx0LnJlbW92ZSA9IHJlYWx0ZWtfbWRpb19yZW1vdmUsXFxuMzM4OTpcXHRcXHQuc2h1dGRvd24gPSByZWFsdGVrX21kaW9fc2h1dGRvd24sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjAzLjU5NDc3Mzk3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDg2MTE3MjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgRHJpdmVyIEV4cGxvcmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgc29tZXRoaW5nIGludGVyZXN0aW5nOiB3ZSd2ZSBnb3QgYm90aCBhbiBgcnRsODM2NW1iX3NtaV9kcml2ZXJgIGFuZCBhbiBgcnRsODM2NW1iX21kaW9fZHJpdmVyYC4gQm90aCBhcmUgdXNpbmcgT0YgKERldmljZSBUcmVlKSBtYXRjaGluZywgd2hpY2ggaXMgZ29vZCDigJMgY2xlYW5lciBhbmQgbW9yZSBmbGV4aWJsZS4gVGhlIG1hdGNoaW5nIHN0cmluZ3MgZm9yIGJvdGggYXJlIFwicmVhbHRlayxydGw4MzY1bWJcIiwgd2hpY2ggc3VnZ2VzdHMgdGhlc2UgZHJpdmVycyBhcmUgcHJvYmFibHkgaGFuZGxpbmcgdGhlIHNhbWUgaGFyZHdhcmUsIGp1c3QgdGhyb3VnaCBkaWZmZXJlbnQgaW50ZXJmYWNlcy4gVGhlIFNNSSBkcml2ZXIgbGlrZWx5IGhhbmRsZXMgdGhlIFJlYWx0ZWsgU3BlY2lmaWMgTWFuYWdlbWVudCBJbnRlcmZhY2UgKFNNSSksIGFuZCB0aGUgTURJTyBkcml2ZXIgd291bGQgZGVhbCB3aXRoIHRoZSBNRElPIGludGVyZmFjZSBvZiB0aGUgY2hpcC5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgdGhleSBob29rIHVwIGFuZCBpbml0aWFsaXplLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzZXQgc2VxdWVuY2UsIGhvdyB0aGUgY2hpcCBnZXRzIGNvbmZpZ3VyZWQsIGFuZCB3aGVyZSB0aGlzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCBmdW5jdGlvbiBjb21lcyBpbnRvIHBsYXkuIFRpbWUgdG8gdHJhY2sgZG93biBhbGwgY2FsbHMgdG8gYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCB0byBzZWUgd2hlbiBhbmQgaG93IGl0J3MgdXNlZC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBkcml2ZXIgb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDI5MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjA2LjA4MDg5NDU2MVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NzY2MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX3Jlc2V0X2NoaXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0yOTU0PXN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyOTg0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMDEwPXN0YXRpYyBpbnQgcnRsODM2NW1iX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzAzMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMwMzE6XFx0cmV0ID0gcnRsODM2NW1iX3Jlc2V0X2NoaXAocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMDMyLVxcdGlmIChyZXQpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTc6MDYuMTI3Nzc2NzczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwMTQyNTA3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUlRMODM2NU1CIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYHJ0bDgzNjVtYl9zZXR1cCgpYCBmdW5jdGlvbiBzZWVtcyB0byBiZSB0aGUgZW50cnkgcG9pbnQgZm9yIHNldHRpbmcgdXAgdGhlIFJlYWx0ZWsgUlRMODM2NU1CIHN3aXRjaCwgd2hpY2ggaXMgYSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHN3aXRjaC4gRFNBIHN3aXRjaGVzLCBpbiBnZW5lcmFsLCBjb25uZWN0IHRvIHRoZSBNRElPIGJ1cyBvciB1c2UgU01JIChTZXJpYWwgTWFuYWdlbWVudCBJbnRlcmZhY2UsIHdoaWNoIGNhbiBiZSBwbGF0Zm9ybS1zcGVjaWZpYyBvciBHUElPLWJpdGJhbmdlZCkuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgc3BlY2lmaWMgUmVhbHRlayBjaGlwIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIGVzcGVjaWFsbHkgb24gYW4gYW1kNjQgYXJjaGl0ZWN0dXJlLCB3aGljaCBpcyB3aGF0IEknbSB0YXJnZXRpbmcuXG5cbkxldCdzIGNhcmVmdWxseSBjb25zaWRlciB0aGUgcmVhc29ucyBhIHRhcmdldCBtaWdodCBiZSB1bnN1aXRhYmxlIGZvciBmdXp6aW5nLCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucy4gU2VjdGlvbiAyIGhpZ2hsaWdodHMgdGhlIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlXCIgc2NlbmFyaW9zLiAgSXQgbGlzdHM6XG5cbjEuICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToqKiBUaGluayB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhpbmdzIHRoYXQgcmVxdWlyZSBhIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkLCBub3Qgc29tZXRoaW5nIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4yLiAgKipVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6KiogIFRoaXMgaW5jbHVkZXMgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIGFuZCB0aGluZ3MgbGlrZSBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCB0aGF0IG9ubHkgZ2V0IGV4ZWN1dGVkIGR1cmluZyBwaHlzaWNhbCBQQ0kgaG90LXVucGx1Z2dpbmcgb3IgZHJpdmVyIHVuYmluZGluZyB2aWEgc3lzZnMuIEFsc28gY29kZSBwYXRocyB0aGF0IGFyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMuXG5cblNvLCB0aGUga2V5IGlzIHdoZXRoZXIgdGhlIERTQSBkcml2ZXIgKm9yKiB0aGUgUlRMODM2NU1CLCBzcGVjaWZpY2FsbHksIGNhbiBldmVuIGJlIGluc3RhbnRpYXRlZCBvciBwcm9iZWQgaW4gYSBRRU1VL3N5emthbGxlciBlbnZpcm9ubWVudCBvbiBhbWQ2NC4gIEkgc2VlIGEgYHJ0bDgzNjVtYl9vZl9tYXRjaGAgd2l0aCBhIGAuY29tcGF0aWJsZSA9IFwicmVhbHRlayxydGw4MzY1bWJcImAuIFRoYXQgbWVhbnMgaXQncyBsaWtlbHkgcHJvYmVkIGJhc2VkIG9uIHRoZSBEZXZpY2UgVHJlZS4gTURJTyBkcml2ZXJzIHVzdWFsbHkgcmVseSBvbiBgbWRpb19kcml2ZXJfcmVnaXN0ZXJgIG9yIHBsYXRmb3JtIGRyaXZlciBwcm9iZS5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXM6IERvZXMgc3l6a2FsbGVyLCBvciBjYW4gc3l6a2FsbGVyLCBjcmVhdGUgb3IgZW11bGF0ZSBSZWFsdGVrIFNNSSBvciBNRElPIGRldmljZXM/ICBJJ20gZ3Vlc3NpbmcgdGhlIGFuc3dlciBpcyBuby4gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgRFNBIGRyaXZlcnMgZm9yIHBoeXNpY2FsIHN3aXRjaCBjaGlwcywgaW5jbHVkaW5nIFJUTDgzNjVNQiwgQjUzLCBNVjg4RTZ4eHgsIFNKQTExMDUsIGV0Yy4sIG5lZWQgKnBoeXNpY2FsKiBzd2l0Y2ggSUMgaGFyZHdhcmUgb3IgcGxhdGZvcm0gZGVmaW5pdGlvbnMgd2l0aGluIHRoZSBEZXZpY2VUcmVlLCB3aGljaCBhcmUgY29ubmVjdGVkIHRvICpyZWFsKiBNRElPL1NNSSBidXNlcy5cblxuV2FpdCBhIHNlY29uZCwgaXMgdGhlcmUgKmFueSogd2F5IHRvIGVtdWxhdGUgYSBEU0Egc3dpdGNoPyBBaCEgYGRzYV9sb29wYCBpbiBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIC0gdGhhdCdzIGEgKm1vY2sqIERTQSBzd2l0Y2ggZHJpdmVyIGZvciB0ZXN0aW5nLiAgSG93ZXZlciwgYWxsIHRoZSAqb3RoZXIqIERTQSBkcml2ZXJzIChSZWFsdGVrLCBTSkExMTA1LCBNaWNyb2NoaXAsIEI1MywgZXRjLikgYXJlICpoYXJkd2FyZSogc3dpdGNoIGRyaXZlcnMsIGJ1aWx0IGZvciB0aG9zZSBzcGVjaWZpYyBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggSUNzLiBUaGUgUlRMODM2NU1CLCBzcGVjaWZpY2FsbHksIGlzIGEgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIGNoaXAsIGxpa2VseSBzb21ldGhpbmcgbGlrZSB0aGUgUlRMODM2NU1CLVZDIG9yIFJUTDgzNjdTLlxuXG5Pa2F5LCBsZXQgbWUgY2hlY2sgdGhlIHByb2JlIG1lY2hhbmlzbSBpbiBgcmVhbHRlay1zbWkuY2AgYW5kIGByZWFsdGVrLW1kaW8uY2AgdG8gYmUgc3VyZS4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGlzIGlzIHByb2JhYmx5IGEgZGVhZCBlbmQgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBwcm9iZSBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5OTQsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTc6MTIuMTQyMDI5ODg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArXFxuICAgMjpcXHQvKiBSZWFsdGVrIFNpbXBsZSBNYW5hZ2VtZW50IEludGVyZmFjZSAoU01JKSBkcml2ZXJcXG4gICAzOlxcdCAqIEl0IGNhbiBiZSBkaXNjdXNzZWQgaG93IFxcXCJzaW1wbGVcXFwiIHRoaXMgaW50ZXJmYWNlIGlzLlxcbiAgIDQ6XFx0ICpcXG4gICA1OlxcdCAqIFRoZSBTTUkgcHJvdG9jb2wgcGlnZ3ktYmFja3MgdGhlIE1ESU8gTURDIGFuZCBNRElPIHNpZ25hbHMgbGV2ZWxzXFxuICAgNjpcXHQgKiBidXQgdGhlIHByb3RvY29sIGlzIG5vdCBNRElPIGF0IGFsbC4gSW5zdGVhZCBpdCBpcyBhIFJlYWx0ZWtcXG4gICA3OlxcdCAqIHBlY3VsYXJpdHkgdGhhdCBuZWVkIHRvIGJpdC1iYW5nIHRoZSBsaW5lcyBpbiBhIHNwZWNpYWwgd2F5IHRvXFxuICAgODpcXHQgKiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBzd2l0Y2guXFxuICAgOTpcXHQgKlxcbiAgMTA6XFx0ICogQVNJQ3Mgd2UgaW50ZW5kIHRvIHN1cHBvcnQgd2l0aCB0aGlzIGRyaXZlcjpcXG4gIDExOlxcdCAqXFxuICAxMjpcXHQgKiBSVEw4MzY2ICAgLSBUaGUgb3JpZ2luYWwgdmVyc2lvbiwgYXBwYXJlbnRseVxcbiAgMTM6XFx0ICogUlRMODM2OSAgIC0gU2ltaWxhciBlbm91Z2ggdG8gaGF2ZSB0aGUgc2FtZSBkYXRzaGVldCBhcyBSVEw4MzY2XFxuICAxNDpcXHQgKiBSVEw4MzY2UkIgLSBQcm9iYWJseSByZWFkcyBvdXQgXFxcIlJUTDgzNjYgcmV2aXNpb24gQlxcXCIsIGhhcyBhIHF1aXRlXFxuICAxNTpcXHQgKiAgICAgICAgICAgICBkaWZmZXJlbnQgcmVnaXN0ZXIgbGF5b3V0IGZyb20gdGhlIG90aGVyIHR3b1xcbiAgMTY6XFx0ICogUlRMODM2NlMgIC0gSXMgdGhpcyBcXFwiUlRMODM2NiBzdXBlclxcXCI/XFxuICAxNzpcXHQgKiBSVEw4MzY3ICAgLSBIYXMgYW4gT3BlbldSVCBkcml2ZXIgYXMgd2VsbFxcbiAgMTg6XFx0ICogUlRMODM2OFMgIC0gU2VlbXMgdG8gYmUgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgUlRMODM2NlJCXFxuICAxOTpcXHQgKiBSVEw4MzcwICAgLSBBbHNvIHVzZXMgU01JXFxuICAyMDpcXHQgKlxcbiAgMjE6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE3IExpbnVzIFdhbGxlaWogXFx1MDAzY2xpbnVzLndhbGxlaWpAbGluYXJvLm9yZ1xcdTAwM2VcXG4gIDIyOlxcdCAqIENvcHlyaWdodCAoQykgMjAxMCBBbnR0aSBTZXBww6Rsw6QgXFx1MDAzY2Euc2VwcGFsYUBnbWFpbC5jb21cXHUwMDNlXFxuICAyMzpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUm9tYW4gWWVyeW9taW4gXFx1MDAzY3JvbWFuQGFkdmVtLmx2XFx1MDAzZVxcbiAgMjQ6XFx0ICogQ29weXJpZ2h0IChDKSAyMDExIENvbGluIExlaXRuZXIgXFx1MDAzY2NvbGluLmxlaXRuZXJAZ29vZ2xlbWFpbC5jb21cXHUwMDNlXFxuICAyNTpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBHYWJvciBKdWhvcyBcXHUwMDNjanVob3NnQG9wZW53cnQub3JnXFx1MDAzZVxcbiAgMjY6XFx0ICovXFxuICAyNzpcXHRcXG4gIDI4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDI5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDMwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZXZpY2UuaFxcdTAwM2VcXG4gIDMxOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcGlubG9jay5oXFx1MDAzZVxcbiAgMzI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAgMzM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L29mLmhcXHUwMDNlXFxuICAzNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4gIDM1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcXHUwMDNlXFxuICAzNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAzNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcmVnbWFwLmhcXHUwMDNlXFxuICAzODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0b3BzLmhcXHUwMDNlXFxuICAzOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcXHUwMDNlXFxuICA0MDpcXHRcXG4gIDQxOlxcdCNpbmNsdWRlIFxcXCJyZWFsdGVrLmhcXFwiXFxuICA0MjpcXHQjaW5jbHVkZSBcXFwicmVhbHRlay1zbWkuaFxcXCJcXG4gIDQzOlxcdCNpbmNsdWRlIFxcXCJydGw4M3h4LmhcXFwiXFxuICA0NDpcXHRcXG4gIDQ1OlxcdCNkZWZpbmUgUkVBTFRFS19TTUlfQUNLX1JFVFJZX0NPVU5UXFx0XFx0NVxcbiAgNDY6XFx0XFxuICA0NzpcXHRzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfY2xrX2RlbGF5KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuICA0ODpcXHR7XFxuICA0OTpcXHRcXHRuZGVsYXkocHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlY2xrX2RlbGF5KTtcXG4gIDUwOlxcdH1cXG4gIDUxOlxcdFxcbiAgNTI6XFx0c3RhdGljIHZvaWQgcmVhbHRla19zbWlfc3RhcnQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gIDUzOlxcdHtcXG4gIDU0OlxcdFxcdC8qIFNldCBHUElPIHBpbnMgdG8gb3V0cHV0IG1vZGUsIHdpdGggaW5pdGlhbCBzdGF0ZTpcXG4gIDU1OlxcdFxcdCAqIFNDSyA9IDAsIFNEQSA9IDFcXG4gIDU2OlxcdFxcdCAqL1xcbiAgNTc6XFx0XFx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVxcdTAwM2VtZGMsIDApO1xcbiAgNTg6XFx0XFx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG4gIDU5OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0LyogQ0xLIDE6IDAgLVxcdTAwM2UgMSwgMSAtXFx1MDAzZSAwICovXFxuICA2MjpcXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG4gIDYzOlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG4gIDY0OlxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbiAgNjU6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQvKiBDTEsgMjogKi9cXG4gIDY4OlxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbiAgNjk6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbiAgNzA6XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kaW8sIDApO1xcbiAgNzE6XFx0XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbiAgNzI6XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuICA3MzpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuICA3NDpcXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMSk7XFxuICA3NTpcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdHN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gIDc4OlxcdHtcXG4gIDc5OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG4gIDgwOlxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGlvLCAwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6NTc6MTIuMTQyMTMxOTI2WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcxMDI1MjkxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogVGhlIFJUTDgzNjVNQiBEcml2ZXIgaXMgTm90IEZ1enphYmxlIGluIFN0YW5kYXJkIEVudmlyb25tZW50cyoqXG5cbk9rYXksIGhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBSZWFsdGVrIHN3aXRjaCBkcml2ZXIsIGBydGw4MzY1bWJfbWFpbi5jYCwgaXMgYSBjYW5kaWRhdGUgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBvdXIgc3RhbmRhcmQgZnV6emluZyBzZXR1cC5cblxuRmlyc3QsIEkgc2VlIHRoYXQgdGhlIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBhIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUMuIEl0IHVzZXMgZWl0aGVyIHRoZSBwcm9wcmlldGFyeSBTTUkgcHJvdG9jb2wgKGJpdC1iYW5nZWQgR1BJTyBsaW5lcywgTURDL01ESU8pIG9yIHRoZSBzdGFuZGFyZCBNRElPIGJ1cy4gQm90aCBjb21tdW5pY2F0aW9uIG1ldGhvZHMgcmVseSBvbiBPRiAoRGV2aWNlIFRyZWUpIGJpbmRpbmdzLCB3aGljaCBpcyB0eXBpY2FsIGZvciBlbWJlZGRlZCBzeXN0ZW1zIGxpa2UgQVJNL01JUFMgcm91dGVycyB3aGVyZSB0aGVzZSBzd2l0Y2hlcyBhcmUgY29tbW9ubHkgdXNlZC4gVGhhdCBhbG9uZSBpcyBhIHJlZCBmbGFnLCBhcyBJIGtub3cgb3VyIGZ1enppbmcgaGVhdmlseSByZWxpZXMgb24gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5JIGtub3cgdGhhdCBhbWQ2NCBzeXN0ZW1zLCBhbmQgc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbCBtYWNoaW5lcywgZG9uJ3QgaGF2ZSBhIERldmljZSBUcmVlIGJpbmRpbmcgb3IgYSBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDIHRvIHRhbGsgdG8uIEV2ZW4gKmlmKiBJIGNvdWxkIGZvcmNlIGBDT05GSUdfT0ZgIHRvIGJlIGNvbXBpbGVkIG9uIGFtZDY0LCB0aGVyZSBpc24ndCBhIHZpcnR1YWwgZGV2aWNlIG9yIGEgbW9jayBkcml2ZXIgdG8gaW5zdGFudGlhdGUgb3IgZW11bGF0ZSB0aGlzIHN3aXRjaC4gSXQncyBlc3NlbnRpYWxseSBhIGRlYWQgZW5kLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhpcyB1c2luZyB0aGUgdHJpYWdlIGd1aWRlbGluZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBmb2xsb3dpbmcgdGhlIHJ1bGVzIGhlcmUuXG5cbkkgZ28gYmFjayB0byB0aGUgcmVhY2hhYmlsaXR5IGd1aWRlbGluZXMuIFRoZSBwcmltYXJ5IGdhdGUgaXMgcmVhY2hhYmlsaXR5LiBUaGUgZ3VpZGVsaW5lcyBleHBsaWNpdGx5IHN0YXRlIHRoYXQgZnV6emluZyBpcyBvbmx5IGFwcHJvcHJpYXRlIGZvciBjb2RlIHRoYXQgY2FuICpleGVjdXRlKiBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIENvZGUgdGhhdCdzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBnZXRzIGEgaGFyZCBwYXNzLiBGdXJ0aGVybW9yZSwgdGhlIGd1aWRlbGluZXMgbGlzdCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhcyBleGFtcGxlcyBvZiB1bnJlYWNoYWJsZSBjb2RlLiBTb3VuZHMgZmFtaWxpYXIuLi5cblxuVGhlIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyICphYnNvbHV0ZWx5KiBmaXRzIHRoaXMgZGVzY3JpcHRpb24uIEl0J3MgZm9yIGEgcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIEFTSUMgKFJlYWx0ZWsgUlRMODM2NU1CL1JUTDgzNjdTKSwgY29ubmVjdGVkIHZpYSBTTUkgb3IgTURJTywgYXMgZGVzY3JpYmVkIGluIHRoZSBEZXZpY2UgVHJlZSwgYW5kIG5vbmUgb2YgdGhpcyBleGlzdHMgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gSXQncyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYC5cblxuSGVyZSdzIGEgY2xlYXIgc3RydWN0dXJlIGZvciB0aGUgcmVzcG9uc2U6XG5cbjEuICAqKldvcnRoRnV6emluZzoqKiBgZmFsc2VgXG4yLiAgKipGb2N1c1N5bWJvbHM6KiogYFtdYCAoTm90aGluZyBvZiBpbW1lZGlhdGUgaW50ZXJlc3QpXG4zLiAgKipFbmFibGVDb25maWdzOioqIGBbXWAgKE5vIHNwZWNpZmljIGNvbmZpZ3MgbmVlZGVkKVxuNC4gICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCB0b3VjaGVzIGBydGw4MzY1bWJfcmVzZXRfY2hpcCgpYCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgYSBkcml2ZXIgZm9yIFJlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIEFTSUNzIChSVEw4MzY1TUIvUlRMODM2N1MpIHRoYXQgYXJlIGNvbm5lY3RlZCB2aWEgU01JIG9yIE1ESU8gYnVzLiBUaGlzIHNldHVwIHJlbGllcyBvbiBEZXZpY2UgVHJlZS1iYXNlZCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBvbiBhbWQ2NC4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nIGR1ZSB0byB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzgzLCJPdXRwdXRUb2tlbnMiOjE0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjE5LjI0NDY2NDY1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNoaXAgcmVzZXQgbG9naWMgYW5kIHRpbWluZyBpbiBydGw4MzY1bWJfcmVzZXRfY2hpcCgpIHdpdGhpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMpLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGF0dGFjaGVkIHZpYSBTTUkgb3IgTURJTyBidXNlcyBkZWZpbmVkIHZpYSBEZXZpY2UgVHJlZSAoT0YpLCB3aGljaCBhcmUgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgb24gYW1kNjQuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjU3OjE5LjI0NDY4ODI0MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow69wg4[1] Phase: Running StartedAt: 2026-09-09 12:57:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow69wg4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 12:57:30 +0000 UTC FinishedAt: 2026-09-09 12:57:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}