ZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29sb3JzL3NsYXRlLnZpbSBiL3J1bnRpbWUvY29sb3JzL3NsYXRlLnZpbQppbmRleCBjMDkxYzcyLi5iOTQ4YjYwIDEwMDY0NAotLS0gYS9ydW50aW1lL2NvbG9ycy9zbGF0ZS52aW0KKysrIGIvcnVudGltZS9jb2xvcnMvc2xhdGUudmltCkBAIC0yOCwxMyArMjgsMTQgQEAKIDpoaSBWaXN1YWwgZ3VpPW5vbmUgZ3VpZmc9a2hha2kgZ3VpYmc9b2xpdmVkcmFiIGN0ZXJtPXJldmVyc2UKIDpoaSBXYXJuaW5nTXNnIGd1aWZnPXNhbG1vbiBjdGVybWZnPTEKIDpoaSBTdHJpbmcgZ3VpZmc9U2t5Qmx1ZSBjdGVybWZnPWRhcmtjeWFuCi06aGkgQ29tbWVudCBndWlmZz1EaW1HcmV5IGN0ZXJtZmc9ZGFya2dyZXkKKzpoaSBDb21tZW50IHRlcm09Ym9sZCBjdGVybWZnPTExIGd1aWZnPSM4MGEwZmYKIDpoaSBDb25zdGFudCBndWlmZz0jZmZhMGEwIGN0ZXJtZmc9YnJvd24KLTpoaSBTcGVjaWFsIGd1aWZnPURhcmtLaGFraSBjdGVybWZnPWJyb3duCi06aGkgSWRlbnRpZmllciBndWlmZz1zYWxtb24gY3Rlcm1mZz1kYXJrcmVkCi06aGkgSW5jbHVkZSBndWlmZz1kYXJrcmVkIGN0ZXJtZmc9ZGFya3JlZAotOmhpIFByZVByb2MgZ3VpZmc9b2xpdmVkcmFiIGN0ZXJtZmc9cmVkCi06aGkgT3BlcmF0b3IgZ3VpZmc9Q29ybmZsb3dlckJsdWUgY3Rlcm1mZz1kYXJrY3lhbgorOmhpIFNwZWNpYWwgZ3VpZmc9Z3JlZW4gY3Rlcm1mZz1icm93bgorOmhpIElkZW50aWZpZXIgZ3VpZmc9c2FsbW9uIGN0ZXJtZmc9cmVkCis6aGkgSW5jbHVkZSBndWlmZz1yZWQgY3Rlcm1mZz1yZWQKKzpoaSBQcmVQcm9jIGd1aWZnPXJlZCBndWliZz13aGl0ZSBjdGVybWZnPXJlZAorOmhpIE9wZXJhdG9yIGd1aWZnPVJlZCBjdGVybWZnPVJlZAorIjpoaSBPcGVyYXRvciBndWlmZz1Db3JuZmxvd2VyQmx1ZSBjdGVybWZnPWRhcmtjeWFuCiA6aGkgRGVmaW5lIGd1aWZnPWdvbGQgZ3VpPWJvbGQgY3Rlcm1mZz15ZWxsb3cKIDpoaSBUeXBlIGd1aWZnPWRhcmtraGFraSBjdGVybWZnPTIKIDpoaSBGdW5jdGlvbiBndWlmZz1uYXZham93aGl0ZSBjdGVybWZnPWJyb3duCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0IGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dAppbmRleCBhYmI1MjhlLi40YTMyMTc1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CisrKyBiL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY2hhbmdlLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMTYKKypjaGFuZ2UudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTU0Miw2ICsxNTQyLDkgQEAKIDwJCQlUbyBzb3J0IG9uIHRoZSB0ZXh0IGF0IHZpcnR1YWwgY29sdW1uIDEwICh0aHVzCiAJCQlpZ25vcmluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRhYnMgYW5kIHNwYWNlcyk6ID4KIAkJCQk6c29ydCAvLipcJTEwdi8KKzwJCQlUbyBzb3J0IG9uIHRoZSBmaXJzdCBudW1iZXIgaW4gdGhlIGxpbmUsIG5vIG1hdHRlcgorCQkJd2hhdCBpcyBpbiBmcm9udCBvZiBpdDogPgorCQkJCTpzb3J0IC8uKlx6ZVxkLwogPAogTm90ZSB0aGF0IHVzaW5nICI6c29ydCIgd2l0aCAiOmdsb2JhbCIgZG9lc24ndCBzb3J0IHRoZSBtYXRjaGluZyBsaW5lcywgaXQncwogcXVpdGUgdXNlbGVzcy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggMDQwMDA3YS4uNzExZGUzNSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDYKKypldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTU0OSwyOSArMTU0OSwzMyBAQAogZXZlbnRoYW5kbGVyKCApCQkJTnVtYmVyCVRSVUUgaWYgaW5zaWRlIGFuIGV2ZW50IGhhbmRsZXIKIGV4ZWN1dGFibGUoIHtleHByfSkJCU51bWJlcgkxIGlmIGV4ZWN1dGFibGUge2V4cHJ9IGV4aXN0cwogZXhpc3RzKCB7ZXhwcn0pCQkJTnVtYmVyCVRSVUUgaWYge2V4cHJ9IGV4aXN0cworZXh0ZW5kKHtleHByMX0sIHtleHByMn0gWywge2V4cHIzfV0pCisJCQkJTGlzdC9EaWN0IGluc2VydCBpdGVtcyBvZiB7ZXhwcjJ9IGludG8ge2V4cHIxfQogZXhwYW5kKCB7ZXhwcn0pCQkJU3RyaW5nCWV4cGFuZCBzcGVjaWFsIGtleXdvcmRzIGluIHtleHByfQogZmlsZXJlYWRhYmxlKCB7ZmlsZX0pCQlOdW1iZXIJVFJVRSBpZiB7ZmlsZX0gaXMgYSByZWFkYWJsZSBmaWxlCitmaWxld3JpdGFibGUoIHtmaWxlfSkJCU51bWJlcglUUlVFIGlmIHtmaWxlfSBpcyBhIHdyaXRhYmxlIGZpbGUKIGZpbHRlcigge2V4cHJ9LCB7c3RyaW5nfSkJTGlzdC9EaWN0ICByZW1vdmUgaXRlbXMgZnJvbSB7ZXhwcn0gd2hlcmUKIAkJCQkJe3N0cmluZ30gaXMgMAogZmluZGRpcigge25hbWV9Wywge3BhdGh9Wywge2NvdW50fV1dKQotCQkJCVN0cmluZwlGaW5kIGRpcmVjdG9yeSB7bmFtZX0gaW4ge3BhdGh9CisJCQkJU3RyaW5nCWZpbmQgZGlyZWN0b3J5IHtuYW1lfSBpbiB7cGF0aH0KIGZpbmRmaWxlKCB7bmFtZX1bLCB7cGF0aH1bLCB7Y291bnR9XV0pCi0JCQkJU3RyaW5nCUZpbmQgZmlsZSB7bmFtZX0gaW4ge3BhdGh9Ci1maWxld3JpdGFibGUoIHtmaWxlfSkJCU51bWJlcglUUlVFIGlmIHtmaWxlfSBpcyBhIHdyaXRhYmxlIGZpbGUKKwkJCQlTdHJpbmcJZmluZCBmaWxlIHtuYW1lfSBpbiB7cGF0aH0KIGZuYW1lbW9kaWZ5KCB7Zm5hbWV9LCB7bW9kc30pCVN0cmluZwltb2RpZnkgZmlsZSBuYW1lCiBmb2xkY2xvc2VkKCB7bG51bX0pCQlOdW1iZXIJZmlyc3QgbGluZSBvZiBmb2xkIGF0IHtsbnVtfSBpZiBjbG9zZWQKIGZvbGRjbG9zZWRlbmQoIHtsbnVtfSkJCU51bWJlcglsYXN0IGxpbmUgb2YgZm9sZCBhdCB7bG51bX0gaWYgY2xvc2VkCiBmb2xkbGV2ZWwoIHtsbnVtfSkJCU51bWJlcglmb2xkIGxldmVsIGF0IHtsbnVtfQogZm9sZHRleHQoICkJCQlTdHJpbmcJbGluZSBkaXNwbGF5ZWQgZm9yIGNsb3NlZCBmb2xkCitmb2xkdGV4dHJlc3VsdCgge2xudW19KQkJU3RyaW5nCXRleHQgZm9yIGNsb3NlZCBmb2xkIGF0IHtsbnVtfQogZm9yZWdyb3VuZCggKQkJCU51bWJlcglicmluZyB0aGUgVmltIHdpbmRvdyB0byB0aGUgZm9yZWdyb3VuZAogZnVuY3Rpb24oIHtuYW1lfSkJCUZ1bmNyZWYgcmVmZXJlbmNlIHRvIGZ1bmN0aW9uIHtuYW1lfQorZ2FyYmFnZWNvbGxlY3QoKQkJbm9uZQlmcmVlIG1lbW9yeSwgYnJlYWtpbmcgY3ljbGljIHJlZmVyZW5jZXMKIGdldCgge2xpc3R9LCB7aWR4fSBbLCB7ZGVmfV0pCWFueQlnZXQgaXRlbSB7aWR4fSBmcm9tIHtsaXN0fSBvciB7ZGVmfQogZ2V0KCB7ZGljdH0sIHtrZXl9IFssIHtkZWZ9XSkJYW55CWdldCBpdGVtIHtrZXl9IGZyb20ge2RpY3R9IG9yIHtkZWZ9CiBnZXRidWZsaW5lKCB7ZXhwcn0sIHtsbnVtfSBbLCB7ZW5kfV0pCiAJCQkJTGlzdAlsaW5lcyB7bG51bX0gdG8ge2VuZH0gb2YgYnVmZmVyIHtleHByfQorZ2V0YnVmdmFyKCB7ZXhwcn0sIHt2YXJuYW1lfSkJYW55CXZhcmlhYmxlIHt2YXJuYW1lfSBpbiBidWZmZXIge2V4cHJ9CiBnZXRjaGFyKCBbZXhwcl0pCQlOdW1iZXIJZ2V0IG9uZSBjaGFyYWN0ZXIgZnJvbSB0aGUgdXNlcgogZ2V0Y2hhcm1vZCggKQkJCU51bWJlcgltb2RpZmllcnMgZm9yIHRoZSBsYXN0IHR5cGVkIGNoYXJhY3RlcgotZ2V0YnVmdmFyKCB7ZXhwcn0sIHt2YXJuYW1lfSkJCXZhcmlhYmxlIHt2YXJuYW1lfSBpbiBidWZmZXIge2V4cHJ9CiBnZXRjbWRsaW5lKCkJCQlTdHJpbmcJcmV0dXJuIHRoZSBjdXJyZW50IGNvbW1hbmQtbGluZQogZ2V0Y21kcG9zKCkJCQlOdW1iZXIJcmV0dXJuIGN1cnNvciBwb3NpdGlvbiBpbiBjb21tYW5kLWxpbmUKIGdldGNtZHR5cGUoKQkJCVN0cmluZwlyZXR1cm4gdGhlIGN1cnJlbnQgY29tbWFuZC1saW5lIHR5cGUKQEAgLTE1OTAsNyArMTU5NCw3IEBACiBnZXRyZWd0eXBlKCBbe3JlZ25hbWV9XSkJU3RyaW5nCXR5cGUgb2YgcmVnaXN0ZXIKIGdldHdpbnBvc3goKQkJCU51bWJlcglYIGNvb3JkIGluIHBpeGVscyBvZiBHVUkgVmltIHdpbmRvdwogZ2V0d2lucG9zeSgpCQkJTnVtYmVyCVkgY29vcmQgaW4gcGl4ZWxzIG9mIEdVSSBWaW0gd2luZG93Ci1nZXR3aW52YXIoIHtucn0sIHt2YXJuYW1lfSkJCXZhcmlhYmxlIHt2YXJuYW1lfSBpbiB3aW5kb3cge25yfQorZ2V0d2ludmFyKCB7bnJ9LCB7dmFybmFtZX0pCWFueQl2YXJpYWJsZSB7dmFybmFtZX0gaW4gd2luZG93IHtucn0KIGdsb2IoIHtleHByfSkJCQlTdHJpbmcJZXhwYW5kIGZpbGUgd2lsZGNhcmRzIGluIHtleHByfQogZ2xvYnBhdGgoIHtwYXRofSwge2V4cHJ9KQlTdHJpbmcJZG8gZ2xvYih7ZXhwcn0pIGZvciBhbGwgZGlycyBpbiB7cGF0aH0KIGhhcygge2ZlYXR1cmV9KQkJCU51bWJlcglUUlVFIGlmIGZlYXR1cmUge2ZlYXR1cmV9IHN1cHBvcnRlZApAQCAtMTYxMSw2ICsxNjE1LDcgQEAKIGlucHV0KCB7cHJvbXB0fSBbLCB7dGV4dH0gWywge2NvbXBsZXRpb259XV0pCiAJCQkJU3RyaW5nCWdldCBpbnB1dCBmcm9tIHRoZSB1c2VyCiBpbnB1dGRpYWxvZygge3B9IFssIHt0fSBbLCB7Y31dXSkgU3RyaW5nICBsaWtlIGlucHV0KCkgYnV0IGluIGEgR1VJIGRpYWxvZworaW5wdXRsaXN0KCB7dGV4dGxpc3R9KQkJTnVtYmVyCWxldCB0aGUgdXNlciBwaWNrIGZyb20gYSBjaG9pY2UgbGlzdAogaW5wdXRyZXN0b3JlKCkJCQlOdW1iZXIJcmVzdG9yZSB0eXBlYWhlYWQKIGlucHV0c2F2ZSgpCQkJTnVtYmVyCXNhdmUgYW5kIGNsZWFyIHR5cGVhaGVhZAogaW5wdXRzZWNyZXQoIHtwcm9tcHR9IFssIHt0ZXh0fV0pIFN0cmluZyAgbGlrZSBpbnB1dCgpIGJ1dCBoaWRpbmcgdGhlIHRleHQKQEAgLTE2ODksNiArMTY5NCw3IEBACiBzZXRsaW5lKCB7bG51bX0sIHtsaW5lfSkJTnVtYmVyCXNldCBsaW5lIHtsbnVtfSB0byB7bGluZX0KIHNldGxvY2xpc3QoIHtucn0sIHtsaXN0fVssIHthY3Rpb259XSkKIAkJCQlOdW1iZXIJbW9kaWZ5IGxvY2F0aW9uIGxpc3QgdXNpbmcge2xpc3R9CitzZXRwb3MoIHtleHByfSwge2xpc3R9KQkJbm9uZQlzZXQgdGhlIHtleHByfSBwb3NpdGlvbiB0byB7bGlzdH0KIHNldHFmbGlzdCgge2xpc3R9Wywge2FjdGlvbn1dKQlOdW1iZXIJbW9kaWZ5IHF1aWNrZml4IGxpc3QgdXNpbmcge2xpc3R9CiBzZXRyZWcoIHtufSwge3Z9Wywge29wdH1dKQlOdW1iZXIJc2V0IHJlZ2lzdGVyIHRvIHZhbHVlIGFuZCB0eXBlCiBzZXR3aW52YXIoIHtucn0sIHt2YXJuYW1lfSwge3ZhbH0pCXNldCB7dmFybmFtZX0gaW4gd2luZG93IHtucn0gdG8ge3ZhbH0KQEAgLTI3MzAsNyArMjczNiw3IEBACiAJCWZvbnQgbmFtZS4gIElmIG5vdCB0aGVuIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KIAkJT3RoZXJ3aXNlIHRoZSBhY3R1YWwgZm9udCBuYW1lIGlzIHJldHVybmVkLCBvciB7bmFtZX0gaWYgdGhlCiAJCUdVSSBkb2VzIG5vdCBzdXBwb3J0IG9idGFpbmluZyB0aGUgcmVhbCBuYW1lLgotCQlPbmx5IHdvcmtzIHdoZW4gdGhlIEdVSSBpcyBydW5uaW5nLCB0aHVzIG5vdCB5b3UgeW91ciB2aW1yYyBvcgorCQlPbmx5IHdvcmtzIHdoZW4gdGhlIEdVSSBpcyBydW5uaW5nLCB0aHVzIG5vdCBpbiB5b3VyIHZpbXJjIG9yCiAJCWd2aW1yYyBmaWxlLiAgVXNlIHRoZSB8R1VJRW50ZXJ8IGF1dG9jb21tYW5kIHRvIHVzZSB0aGlzCiAJCWZ1bmN0aW9uIGp1c3QgYWZ0ZXIgdGhlIEdVSSBoYXMgc3RhcnRlZC4KIAkJTm90ZSB0aGF0IHRoZSBHVEsgMiBHVUkgYWNjZXB0cyBhbnkgZm9udCBuYW1lLCB0aHVzIGNoZWNraW5nCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9oZWxwLnR4dCBiL3J1bnRpbWUvZG9jL2hlbHAudHh0CmluZGV4IDIyOTIyMGYuLmY2YTllMmIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2hlbHAudHh0CisrKyBiL3J1bnRpbWUvZG9jL2hlbHAudHh0CkBAIC0xNzEsNiArMTcxLDcgQEAKIHx2ZXJzaW9uNC50eHR8CURpZmZlcmVuY2VzIGJldHdlZW4gVmltIHZlcnNpb24gMy4wIGFuZCA0LngKIHx2ZXJzaW9uNS50eHR8CURpZmZlcmVuY2VzIGJldHdlZW4gVmltIHZlcnNpb24gNC42IGFuZCA1LngKIHx2ZXJzaW9uNi50eHR8CURpZmZlcmVuY2VzIGJldHdlZW4gVmltIHZlcnNpb24gNS43IGFuZCA2LngKK3x2ZXJzaW9uNy50eHR8CURpZmZlcmVuY2VzIGJldHdlZW4gVmltIHZlcnNpb24gNi40IGFuZCA3LngKIAkJCQkJCSpzeXMtZmlsZS1saXN0KgogUmVtYXJrcyBhYm91dCBzcGVjaWZpYyBzeXN0ZW1zIH4KIHxvc18zOTAudHh0fAlPUy8zOTAgVW5peApAQCAtMTk1LDEyICsxOTYsNiBAQAogfHBpX3ppcC50eHR8CVppcCBhcmNoaXZlIGV4cGxvcmVyCiAKIExPQ0FMIEFERElUSU9OUzoJCQkJKmxvY2FsLWFkZGl0aW9ucyoKLXxjZWN1dGlsLnR4dHwJRHJDaGlwJ3MgVXRpbGl0aWVzCQkJCUp1biAxMSwgMjAwNAotfGV4YW1wbGUudHh0fAlFeGFtcGxlIGZvciBhIGxvY2FsbHkgYWRkZWQgaGVscCBmaWxlCi18bWF0Y2hpdC50eHR8ICAgRXh0ZW5kZWQgIiUiIG1hdGNoaW5nCi18dGVzdC50eHR8CVRlc3RpbmcgdGhlIGjpbHAgY/ZtbeVuZCBu9HcKLXx0eXBlY29yci50eHR8CVBsdWdpbiBmb3IgY29ycmVjdGluZyB0eXBpbmcgbWlzdGFrZXMKLXxoZWxwcC50eHR8CUR1bW15IGxpbmUgdG8gYXZvaWQgYW4gZXJyb3IgbWVzc2FnZQogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICpiYXJzKgkJQmFycyBleGFtcGxlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbnRyby50eHQgYi9ydW50aW1lL2RvYy9pbnRyby50eHQKaW5kZXggZTlmZTM2OS4uZDIzZmU3YyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW50cm8udHh0CisrKyBiL3J1bnRpbWUvZG9jL2ludHJvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSppbnRyby50eHQqICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA1IFNlcCAwMQorKmludHJvLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC05NCwxMyArOTQsMTUgQEAKIFRoZXJlIGFyZSBzZXZlcmFsIG1haWxpbmcgbGlzdHMgZm9yIFZpbToKIDx2aW1AdmltLm9yZz4KIAlGb3IgZGlzY3Vzc2lvbnMgYWJvdXQgdXNpbmcgZXhpc3RpbmcgdmVyc2lvbnMgb2YgVmltOiBVc2VmdWwgbWFwcGluZ3MsCi0JcXVlc3Rpb25zLCBhbnN3ZXJzLCB3aGVyZSB0byBnZXQgYSBzcGVjaWZpYyB2ZXJzaW9uLCBldGMuCisJcXVlc3Rpb25zLCBhbnN3ZXJzLCB3aGVyZSB0byBnZXQgYSBzcGVjaWZpYyB2ZXJzaW9uLCBldGMuICBUaGVyZSBhcmUKKwlxdWl0ZSBhIGZldyBwZW9wbGUgd2F0Y2hpbmcgdGhpcyBsaXN0IGFuZCBhbnN3ZXJpbmcgcXVlc3Rpb25zLCBhbHNvCisJZm9yIGJlZ2lubmVycy4gIERvbid0IGhlc2l0YXRlIHRvIGFzayB5b3VyIHF1ZXN0aW9uIGhlcmUuCiA8dmltLWRldkB2aW0ub3JnPgkJCQkqdmltLWRldiogKnZpbWRldioKIAlGb3IgZGlzY3Vzc2lvbnMgYWJvdXQgY2hhbmdpbmcgVmltOiBOZXcgZmVhdHVyZXMsIHBvcnRpbmcsIHBhdGNoZXMsCiAJYmV0YS10ZXN0IHZlcnNpb25zLCBldGMuCiA8dmltLWFubm91bmNlQHZpbS5vcmc+CQkJCSp2aW0tYW5ub3VuY2UqCiAJQW5ub3VuY2VtZW50cyBhYm91dCBuZXcgdmVyc2lvbnMgb2YgVmltOyBhbHNvIGZvciBiZXRhLXRlc3QgdmVyc2lvbnMKLQlhbmQgcG9ydHMgdG8gZGlmZmVyZW50IHN5c3RlbXMuCisJYW5kIHBvcnRzIHRvIGRpZmZlcmVudCBzeXN0ZW1zLiAgVGhpcyBpcyBhIHJlYWQtb25seSBsaXN0LgogPHZpbS1tdWx0aWJ5dGVAdmltLm9yZz4JCQkJKnZpbS1tdWx0aWJ5dGUqCiAJRm9yIGRpc2N1c3Npb25zIGFib3V0IHVzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIG11bHRpLWJ5dGUgYXNwZWN0cyBvZgogCVZpbS4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29wdGlvbnMudHh0IGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKaW5kZXggYjA0YmI1NS4uMWM1ZjVkZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA1Cisqb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE0NDIsNiArMTQ0Miw4IEBACiAJCQl7bm90IGluIFZpfQogCU51bWJlciBvZiBzY3JlZW4gbGluZXMgdG8gdXNlIGZvciB0aGUgY29tbWFuZC1saW5lLiAgSGVscHMgYXZvaWRpbmcKIAl8aGl0LWVudGVyfCBwcm9tcHRzLgorCVRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiBpcyBzdG9yZWQgd2l0aCB0aGUgdGFiIHBhZ2UsIHNvIHRoYXQgZWFjaCB0YWIKKwlwYWdlIGNhbiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlLgogCiAJCQkJCQkqJ2NtZHdpbmhlaWdodCcqIConY3doJyoKICdjbWR3aW5oZWlnaHQnICdjd2gnCW51bWJlcgkoZGVmYXVsdCA3KQpAQCAtNjUyMiw4ICs2NTI0LDggQEAKICd0YWdyZWxhdGl2ZScgJ3RyJwlib29sZWFuCShWaW0gZGVmYXVsdDogb24sIFZpIGRlZmF1bHQ6IG9mZikKIAkJCWdsb2JhbAogCQkJe25vdCBpbiBWaX0KLQlJZiBvbiBhbmQgdXNpbmcgYSB0YWcgZmlsZSBpbiBhbm90aGVyIGRpcmVjdG9yeSwgZmlsZSBuYW1lcyBpbiB0aGF0Ci0JdGFnIGZpbGUgYXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRhZyBmaWxlIGlzLgorCUlmIG9uIGFuZCB1c2luZyBhIHRhZ3MgZmlsZSBpbiBhbm90aGVyIGRpcmVjdG9yeSwgZmlsZSBuYW1lcyBpbiB0aGF0CisJdGFncyBmaWxlIGFyZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSB0YWdzIGZpbGUgaXMuCiAJTk9URTogVGhpcyBvcHRpb24gaXMgc2V0IHRvIHRoZSBWaSBkZWZhdWx0IHZhbHVlIHdoZW4gJ2NvbXBhdGlibGUnIGlzCiAJc2V0IGFuZCB0byB0aGUgVmltIGRlZmF1bHQgdmFsdWUgd2hlbiAnY29tcGF0aWJsZScgaXMgcmVzZXQuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhYnBhZ2UudHh0IGIvcnVudGltZS9kb2MvdGFicGFnZS50eHQKaW5kZXggNTQzOWZkNC4uNTVmMTJkOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFicGFnZS50eHQKKysrIGIvcnVudGltZS9kb2MvdGFicGFnZS50eHQKQEAgLTEsNCArMSw0IEBACi0qdGFicGFnZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDYKKyp0YWJwYWdlLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjA1LDYgKzIwNSw4IEBACiAKIFZhcmlhYmxlcyBsb2NhbCB0byBhIHRhYiBwYWdlIHN0YXJ0IHdpdGggInQ6Ii4gfHRhYnBhZ2UtdmFyaWFibGV8CiAKK0N1cnJlbnRseSB0aGVyZSBpcyBvbmx5IG9uZSBvcHRpb24gbG9jYWwgdG8gYSB0YWIgcGFnZTogJ2NtZGhlaWdodCcuCisKIFRoZSBUYWJMZWF2ZSBhbmQgVGFiRW50ZXIgYXV0b2NvbW1hbmQgZXZlbnRzIGNhbiBiZSB1c2VkIHRvIGRvIHNvbWV0aGluZyB3aGVuCiBzd2l0Y2hpbmcgZnJvbSBvbmUgdGFiIHBhZ2UgdG8gYW5vdGhlci4gIFRoZSBleGFjdCBvcmRlciBkZXBlbmRzIG9uIHdoYXQgeW91CiBhcmUgZG9pbmcuICBXaGVuIGNyZWF0aW5nIGEgbmV3IHRhYiBwYWdlIHRoaXMgd29ya3MgYXMgaWYgeW91IGNyZWF0ZSBhIG5ldwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggM2RhZjNiYS4uNDEzNGExZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC01NjExLDYgKzU2MTEsNyBAQAogaGVicmV3LnR4dAloZWJyZXcudHh0CS8qaGVicmV3LnR4dCoKIGhlbHAJdmFyaW91cy50eHQJLypoZWxwKgogaGVscC1jb250ZXh0CWhlbHAudHh0CS8qaGVscC1jb250ZXh0KgoraGVscC10YWdzCXRhZ3MJMQogaGVscC10cmFuc2xhdGVkCXZhcmlvdXMudHh0CS8qaGVscC10cmFuc2xhdGVkKgogaGVscC14dGVybS13aW5kb3cJdmFyaW91cy50eHQJLypoZWxwLXh0ZXJtLXdpbmRvdyoKIGhlbHAudHh0CWhlbHAudHh0CS8qaGVscC50eHQqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IGJmN2Y0MjguLjhkZGY1MmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA3CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzMsNyArMzMsNyBAQAogSGFuZGxlIHBvc3Rwb25lZCBwcmVmaXggd2l0aCBDT01QT1VORFBFUk1JVEZMQUcgb3IgQ09NUE9VTkRGT1JCSURGTEFHLgogICAgIFdGUF9DT01QUEVSTUlUIGFuZCBXRlBfQ09NUEZPUkJJRAogCi0iOm1rc3BlbGwiIHN0aWxsIHRha2VzIHRvbyBsb25nIGluIEh1bmdhcmlhbiBkaWN0aW9uYXJ5LgorIjpta3NwZWxsIiBzdGlsbCB0YWtlcyBtdWNoIHRvbyBsb25nIGluIEh1bmdhcmlhbiBkaWN0aW9uYXJ5LgogCiBVc2Ugfi90bXAvaHVuZ2FyaWFuKi50eHQgdG8gdGVzdCBkaWN0aW9uYXJ5IHdpdGguCiAKQEAgLTE4MDUsNiArMTgwNSwxMSBAQAogCiAKIFRhZ3M6Cis5ICAgV2l0aCAiOnNldCB0YWdzPS4vdGFncywuLi90YWdzIiBhbmQgYSB0YWcgYXBwZWFycyBpbiBib3RoIHRhZ3MgZmlsZXMgaXQgaXMKKyAgICBhZGRlZCB0d2ljZS4gIFJlcXVpcmVzIGZpZ3VyaW5nIG91dCB0aGUgYWN0dWFsIGZpbGUgbmFtZSBmb3IgZWFjaCBmb3VuZAorICAgIG1hdGNoLiAgUmVtb3ZlIHRhZ19mbmFtZSBmcm9tIHRoZSBtYXRjaCBhbmQgY29tYmluZSBpdCB3aXRoIHRoZSBmbmFtZSBpbgorICAgIHRoZSBtYXRjaCAod2l0aG91dCBleHBhbmRpbmcgb3Igb3RoZXIgdGhpbmdzIHRoYXQgdGFrZSB0aW1lKS4gIFdoZW4KKyAgICAndGFncmVsYXRpdmUnIGlzIG9mZiB0YWdfZm5hbWUgaXNuJ3QgbmVlZGVkIGF0IGFsbC4KIDcgICBDYW4gQ1RSTC1dIChqdW1wIHRvIHRhZykgaW5jbHVkZSBhIGZvbGxvd2luZyAiLiIgYW5kICItPiIgdG8gcmVzdHJpY3QgdGhlCiAgICAgbnVtYmVyIG9mIHBvc3NpYmxlIG1hdGNoZXM/IENoZWNrIHRhZ3MgZmlsZSBmb3IgYW4gaXRlbSB0aGF0IGhhcyBtZW1iZXJzLgogICAgIChGbGVtbWluZyBNYWRzZW4pCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfNDEudHh0IGIvcnVudGltZS9kb2MvdXNyXzQxLnR4dAppbmRleCAzZmYxMzQwLi41YjdmYmIwIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfNDEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzQxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjQKKyp1c3JfNDEudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwOQogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApAQCAtNTc3LDE1ICs1NzcsMTkgQEAKIHRoZSBmdW5jdGlvbiBuYW1lIHRvIGp1bXAgdG8gZGV0YWlsZWQgaGVscCBvbiBpdC4KIAogU3RyaW5nIG1hbmlwdWxhdGlvbjoKLQljaGFyMm5yKCkJCWdldCBBU0NJSSB2YWx1ZSBvZiBhIGNoYXJhY3RlcgogCW5yMmNoYXIoKQkJZ2V0IGEgY2hhcmFjdGVyIGJ5IGl0cyBBU0NJSSB2YWx1ZQorCWNoYXIybnIoKQkJZ2V0IEFTQ0lJIHZhbHVlIG9mIGEgY2hhcmFjdGVyCisJc3RyMm5yKCkJCWNvbnZlcnQgYSBzdHJpbmcgdG8gYSBudW1iZXIKKwlwcmludGYoKQkJZm9ybWF0IGEgc3RyaW5nIGFjY29yZGluZyB0byAlIGl0ZW1zCiAJZXNjYXBlKCkJCWVzY2FwZSBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nIHdpdGggYSAnXCcKKwl0cigpCQkJdHJhbnNsYXRlIGNoYXJhY3RlcnMgZnJvbSBvbmUgc2V0IHRvIGFub3RoZXIKIAlzdHJ0cmFucygpCQl0cmFuc2xhdGUgYSBzdHJpbmcgdG8gbWFrZSBpdCBwcmludGFibGUKIAl0b2xvd2VyKCkJCXR1cm4gYSBzdHJpbmcgdG8gbG93ZXJjYXNlCiAJdG91cHBlcigpCQl0dXJuIGEgc3RyaW5nIHRvIHVwcGVyY2FzZQogCW1hdGNoKCkJCQlwb3NpdGlvbiB3aGVyZSBhIHBhdHRlcm4gbWF0Y2hlcyBpbiBhIHN0cmluZwogCW1hdGNoZW5kKCkJCXBvc2l0aW9uIHdoZXJlIGEgcGF0dGVybiBtYXRjaCBlbmRzIGluIGEgc3RyaW5nCiAJbWF0Y2hzdHIoKQkJbWF0Y2ggb2YgYSBwYXR0ZXJuIGluIGEgc3RyaW5nCisJbWF0Y2hsaXN0KCkJCWxpa2UgbWF0Y2hzdHIoKSBhbmQgYWxzbyByZXR1cm4gc3VibWF0Y2hlcwogCXN0cmlkeCgpCQlmaXJzdCBpbmRleCBvZiBhIHNob3J0IHN0cmluZyBpbiBhIGxvbmcgc3RyaW5nCiAJc3RycmlkeCgpCQlsYXN0IGluZGV4IG9mIGEgc2hvcnQgc3RyaW5nIGluIGEgbG9uZyBzdHJpbmcKIAlzdHJsZW4oKQkJbGVuZ3RoIG9mIGEgc3RyaW5nCkBAIC01OTQsNiArNTk4LDkgQEAKIAlzdHJwYXJ0KCkJCWdldCBwYXJ0IG9mIGEgc3RyaW5nCiAJZXhwYW5kKCkJCWV4cGFuZCBzcGVjaWFsIGtleXdvcmRzCiAJaWNvbnYoKQkJCWNvbnZlcnQgdGV4dCBmcm9tIG9uZSBlbmNvZGluZyB0byBhbm90aGVyCisJYnl0ZWlkeCgpCQlieXRlIGluZGV4IG9mIGEgY2hhcmFjdGVyIGluIGEgc3RyaW5nCisJcmVwZWF0KCkJCXJlcGVhdCBhIHN0cmluZyBtdWx0aXBsZSB0aW1lcworCWV2YWwoKQkJCWV2YWx1YXRlIGEgc3RyaW5nIGV4cHJlc3Npb24KIAogTGlzdCBtYW5pcHVsYXRpb246CiAJZ2V0KCkJCQlnZXQgYW4gaXRlbSB3aXRob3V0IGVycm9yIGZvciB3cm9uZyBpbmRleApAQCAtNjExLDEyICs2MTgsMTQgQEAKIAlyZXZlcnNlKCkJCXJldmVyc2UgdGhlIG9yZGVyIG9mIGEgTGlzdAogCXNwbGl0KCkJCQlzcGxpdCBhIFN0cmluZyBpbnRvIGEgTGlzdAogCWpvaW4oKQkJCWpvaW4gTGlzdCBpdGVtcyBpbnRvIGEgU3RyaW5nCisJcmFuZ2UoKQkJCXJldHVybiBhIExpc3Qgd2l0aCBhIHNlcXVlbmNlIG9mIG51bWJlcnMKIAlzdHJpbmcoKQkJU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgTGlzdAogCWNhbGwoKQkJCWNhbGwgYSBmdW5jdGlvbiB3aXRoIExpc3QgYXMgYXJndW1lbnRzCiAJaW5kZXgoKQkJCWluZGV4IG9mIGEgdmFsdWUgaW4gYSBMaXN0CiAJbWF4KCkJCQltYXhpbXVtIHZhbHVlIGluIGEgTGlzdAogCW1pbigpCQkJbWluaW11bSB2YWx1ZSBpbiBhIExpc3QKIAljb3VudCgpCQkJY291bnQgbnVtYmVyIG9mIHRpbWVzIGEgdmFsdWUgYXBwZWFycyBpbiBhIExpc3QKKwlyZXBlYXQoKQkJcmVwZWF0IGEgTGlzdCBtdWx0aXBsZSB0aW1lcwogCiBEaWN0aW9uYXJ5IG1hbmlwdWxhdGlvbjoKIAlnZXQoKQkJCWdldCBhbiBlbnRyeSB3aXRob3V0IGFuIGVycm9yIGZvciBhIHdyb25nIGtleQpAQCAtNjM3LDE1ICs2NDYsMzAgQEAKIAltaW4oKQkJCW1pbmltdW0gdmFsdWUgaW4gYSBEaWN0aW9uYXJ5CiAJY291bnQoKQkJCWNvdW50IG51bWJlciBvZiB0aW1lcyBhIHZhbHVlIGFwcGVhcnMKIAotV29ya2luZyB3aXRoIHRleHQgaW4gdGhlIGN1cnJlbnQgYnVmZmVyOgotCWJ5dGUybGluZSgpCQlnZXQgbGluZSBudW1iZXIgYXQgYSBzcGVjaWZpYyBieXRlIGNvdW50Ci0JbGluZTJieXRlKCkJCWJ5dGUgY291bnQgYXQgYSBzcGVjaWZpYyBsaW5lCitWYXJpYWJsZXM6CisJdHlwZSgpCQkJdHlwZSBvZiBhIHZhcmlhYmxlCisJaXNsb2NrZWQoKQkJY2hlY2sgaWYgYSB2YXJpYWJsZSBpcyBsb2NrZWQKKwlmdW5jdGlvbigpCQlnZXQgYSBGdW5jcmVmIGZvciBhIGZ1bmN0aW9uIG5hbWUKKwlnZXRidWZ2YXIoKQkJZ2V0IGEgdmFyaWFibGUgdmFsdWUgZnJvbSBhIHNwZWNpZmljIGJ1ZmZlcgorCXNldGJ1ZnZhcigpCQlzZXQgYSB2YXJpYWJsZSBpbiBhIHNwZWNpZmljIGJ1ZmZlcgorCWdldHdpbnZhcigpCQlnZXQgYSB2YXJpYWJsZSB2YWx1ZSBmcm9tIGEgc3BlY2lmaWMgd2luZG93CisJc2V0d2ludmFyKCkJCXNldCBhIHZhcmlhYmxlIGluIGEgc3BlY2lmaWMgd2luZG93CisJZ2FyYmFnZWNvbGxlY3QoKQlwb3NzaWJseSBmcmVlIG1lbW9yeQorCitDdXJzb3IgYW5kIG1hcmsgcG9zaXRpb246CiAJY29sKCkJCQljb2x1bW4gbnVtYmVyIG9mIHRoZSBjdXJzb3Igb3IgYSBtYXJrCiAJdmlydGNvbCgpCQlzY3JlZW4gY29sdW1uIG9mIHRoZSBjdXJzb3Igb3IgYSBtYXJrCiAJbGluZSgpCQkJbGluZSBudW1iZXIgb2YgdGhlIGN1cnNvciBvciBtYXJrCiAJd2luY29sKCkJCXdpbmRvdyBjb2x1bW4gbnVtYmVyIG9mIHRoZSBjdXJzb3IKIAl3aW5saW5lKCkJCXdpbmRvdyBsaW5lIG51bWJlciBvZiB0aGUgY3Vyc29yCiAJY3Vyc29yKCkJCXBvc2l0aW9uIHRoZSBjdXJzb3IgYXQgYSBsaW5lL2NvbHVtbgorCWdldHBvcygpCQlnZXQgcG9zaXRpb24gb2YgY3Vyc29yLCBtYXJrLCBldGMuCisJc2V0cG9zKCkJCXNldCBwb3NpdGlvbiBvZiBjdXJzb3IsIG1hcmssIGV0Yy4KKwlieXRlMmxpbmUoKQkJZ2V0IGxpbmUgbnVtYmVyIGF0IGEgc3BlY2lmaWMgYnl0ZSBjb3VudAorCWxpbmUyYnl0ZSgpCQlieXRlIGNvdW50IGF0IGEgc3BlY2lmaWMgbGluZQorCWRpZmZfZmlsbGVyKCkJCWdldCB0aGUgbnVtYmVyIG9mIGZpbGxlciBsaW5lcyBhYm92ZSBhIGxpbmUKKworV29ya2luZyB3aXRoIHRleHQgaW4gdGhlIGN1cnJlbnQgYnVmZmVyOgogCWdldGxpbmUoKQkJZ2V0IGEgbGluZSBvciBsaXN0IG9mIGxpbmVzIGZyb20gdGhlIGJ1ZmZlcgogCXNldGxpbmUoKQkJcmVwbGFjZSBhIGxpbmUgaW4gdGhlIGJ1ZmZlcgogCWFwcGVuZCgpCQlhcHBlbmQgbGluZSBvciBsaXN0IG9mIGxpbmVzIGluIHRoZSBidWZmZXIKQEAgLTY1OCwyNCArNjgyLDI3IEBACiAJc2VhcmNocG9zKCkJCWZpbmQgYSBtYXRjaCBmb3IgYSBwYXR0ZXJuCiAJc2VhcmNocGFpcigpCQlmaW5kIHRoZSBvdGhlciBlbmQgb2YgYSBzdGFydC9za2lwL2VuZAogCXNlYXJjaHBhaXJwb3MoKQkJZmluZCB0aGUgb3RoZXIgZW5kIG9mIGEgc3RhcnQvc2tpcC9lbmQKKwlzZWFyY2hkZWNsKCkJCXNlYXJjaCBmb3IgdGhlIGRlY2xhcmF0aW9uIG9mIGEgbmFtZQogCiBTeXN0ZW0gZnVuY3Rpb25zIGFuZCBtYW5pcHVsYXRpb24gb2YgZmlsZXM6Ci0JYnJvd3NlKCkJCXB1dCB1cCBhIGZpbGUgcmVxdWVzdGVyCiAJZ2xvYigpCQkJZXhwYW5kIHdpbGRjYXJkcwogCWdsb2JwYXRoKCkJCWV4cGFuZCB3aWxkY2FyZHMgaW4gYSBudW1iZXIgb2YgZGlyZWN0b3JpZXMKKwlmaW5kZmlsZSgpCQlmaW5kIGEgZmlsZSBpbiBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMKKwlmaW5kZGlyKCkJCWZpbmQgYSBkaXJlY3RvcnkgaW4gYSBsaXN0IG9mIGRpcmVjdG9yaWVzCiAJcmVzb2x2ZSgpCQlmaW5kIG91dCB3aGVyZSBhIHNob3J0Y3V0IHBvaW50cyB0bwogCWZuYW1lbW9kaWZ5KCkJCW1vZGlmeSBhIGZpbGUgbmFtZQorCXBhdGhzaG9ydGVuKCkJCXNob3J0ZW4gZGlyZWN0b3J5IG5hbWVzIGluIGEgcGF0aAorCXNpbXBsaWZ5KCkJCXNpbXBsaWZ5IGEgcGF0aCB3aXRob3V0IGNoYW5naW5nIGl0cyBtZWFuaW5nCiAJZXhlY3V0YWJsZSgpCQljaGVjayBpZiBhbiBleGVjdXRhYmxlIHByb2dyYW0gZXhpc3RzCiAJZmlsZXJlYWRhYmxlKCkJCWNoZWNrIGlmIGEgZmlsZSBjYW4gYmUgcmVhZAogCWZpbGV3cml0YWJsZSgpCQljaGVjayBpZiBhIGZpbGUgY2FuIGJlIHdyaXR0ZW4gdG8KLQlta2RpcigpCQkJY3JlYXRlIGEgbmV3IGRpcmVjdG9yeQorCWdldGZwZXJtKCkJCWdldCB0aGUgcGVybWlzc2lvbnMgb2YgYSBmaWxlCisJZ2V0ZnR5cGUoKQkJZ2V0IHRoZSBraW5kIG9mIGEgZmlsZQogCWlzZGlyZWN0b3J5KCkJCWNoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0cwotCWdldGN3ZCgpCQlnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKIAlnZXRmc2l6ZSgpCQlnZXQgdGhlIHNpemUgb2YgYSBmaWxlCi0JZ2V0ZnRpbWUoKQkJZ2V0IGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgYSBmaWxlCi0JbG9jYWx0aW1lKCkJCWdldCBjdXJyZW50IHRpbWUKLQlzdHJmdGltZSgpCQljb252ZXJ0IHRpbWUgdG8gYSBzdHJpbmcKKwlnZXRjd2QoKQkJZ2V0IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAJdGVtcG5hbWUoKQkJZ2V0IHRoZSBuYW1lIG9mIGEgdGVtcG9yYXJ5IGZpbGUKKwlta2RpcigpCQkJY3JlYXRlIGEgbmV3IGRpcmVjdG9yeQogCWRlbGV0ZSgpCQlkZWxldGUgYSBmaWxlCiAJcmVuYW1lKCkJCXJlbmFtZSBhIGZpbGUKIAlzeXN0ZW0oKQkJZ2V0IHRoZSByZXN1bHQgb2YgYSBzaGVsbCBjb21tYW5kCkBAIC02ODMsNiArNzEwLDEzIEBACiAJcmVhZGZpbGUoKQkJcmVhZCBhIGZpbGUgaW50byBhIExpc3Qgb2YgbGluZXMKIAl3cml0ZWZpbGUoKQkJd3JpdGUgYSBMaXN0IG9mIGxpbmVzIGludG8gYSBmaWxlCiAKK0RhdGUgYW5kIFRpbWU6CisJZ2V0ZnRpbWUoKQkJZ2V0IGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgb2YgYSBmaWxlCisJbG9jYWx0aW1lKCkJCWdldCBjdXJyZW50IHRpbWUgaW4gc2Vjb25kcworCXN0cmZ0aW1lKCkJCWNvbnZlcnQgdGltZSB0byBhIHN0cmluZworCXJlbHRpbWUoKQkJZ2V0IHRoZSBjdXJyZW50IG9yIGVsYXBzZWQgdGltZSBhY2N1cmF0ZWx5CisJcmVsdGltZXN0cigpCQljb252ZXJ0IHJlbHRpbWUoKSByZXN1bHQgdG8gYSBzdHJpbmcKKwogQnVmZmVycywgd2luZG93cyBhbmQgdGhlIGFyZ3VtZW50IGxpc3Q6CiAJYXJnYygpCQkJbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGFyZ3VtZW50IGxpc3QKIAlhcmdpZHgoKQkJY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgYXJndW1lbnQgbGlzdApAQCAtNjkyLDI3ICs3MjYsNTIgQEAKIAlidWZsb2FkZWQoKQkJY2hlY2sgaWYgYSBidWZmZXIgZXhpc3RzIGFuZCBpcyBsb2FkZWQKIAlidWZuYW1lKCkJCWdldCB0aGUgbmFtZSBvZiBhIHNwZWNpZmljIGJ1ZmZlcgogCWJ1Zm5yKCkJCQlnZXQgdGhlIGJ1ZmZlciBudW1iZXIgb2YgYSBzcGVjaWZpYyBidWZmZXIKKwl0YWJwYWdlYnVmbGlzdCgpCXJldHVybiBMaXN0IG9mIGJ1ZmZlcnMgaW4gYSB0YWIgcGFnZQorCXRhYnBhZ2VucigpCQlnZXQgdGhlIG51bWJlciBvZiBhIHRhYiBwYWdlCisJdGFicGFnZXdpbm5yKCkJCWxpa2Ugd2lubnIoKSBmb3IgYSBzcGVjaWZpZWQgdGFiIHBhZ2UKIAl3aW5ucigpCQkJZ2V0IHRoZSB3aW5kb3cgbnVtYmVyIGZvciB0aGUgY3VycmVudCB3aW5kb3cKIAlidWZ3aW5ucigpCQlnZXQgdGhlIHdpbmRvdyBudW1iZXIgb2YgYSBzcGVjaWZpYyBidWZmZXIKIAl3aW5idWZucigpCQlnZXQgdGhlIGJ1ZmZlciBudW1iZXIgb2YgYSBzcGVjaWZpYyB3aW5kb3cKIAlnZXRidWZsaW5lKCkJCWdldCBhIGxpc3Qgb2YgbGluZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlcgotCWdldGJ1ZnZhcigpCQlnZXQgYSB2YXJpYWJsZSB2YWx1ZSBmcm9tIGEgc3BlY2lmaWMgYnVmZmVyCi0Jc2V0YnVmdmFyKCkJCXNldCBhIHZhcmlhYmxlIGluIGEgc3BlY2lmaWMgYnVmZmVyCi0JZ2V0d2ludmFyKCkJCWdldCBhIHZhcmlhYmxlIHZhbHVlIGZyb20gYSBzcGVjaWZpYyB3aW5kb3cKLQlzZXR3aW52YXIoKQkJc2V0IGEgdmFyaWFibGUgaW4gYSBzcGVjaWZpYyB3aW5kb3cKKworQ29tbWFuZCBsaW5lOgorCWdldGNtZGxpbmUoKQkJZ2V0IHRoZSBjdXJyZW50IGNvbW1hbmQgbGluZQorCWdldGNtZHBvcygpCQlnZXQgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBpbiB0aGUgY29tbWFuZCBsaW5lCisJc2V0Y21kcG9zKCkJCXNldCBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIGluIHRoZSBjb21tYW5kIGxpbmUKKwlnZXRjbWR0eXBlKCkJCXJldHVybiB0aGUgY3VycmVudCBjb21tYW5kLWxpbmUgdHlwZQorCitRdWlja2ZpeCBhbmQgbG9jYXRpb24gbGlzdHM6CisJZ2V0cWZsaXN0KCkJCWxpc3Qgb2YgcXVpY2tmaXggZXJyb3JzCisJc2V0cWZsaXN0KCkJCW1vZGlmeSBhIHF1aWNrZml4IGxpc3QKKwlnZXRsb2NsaXN0KCkJCWxpc3Qgb2YgbG9jYXRpb24gbGlzdCBpdGVtcworCXNldGxvY2xpc3QoKQkJbW9kaWZ5IGEgbG9jYXRpb24gbGlzdAorCitJbnNlcnQgbW9kZSBjb21wbGV0aW9uOgorCWNvbXBsZXRlKCkJCXNldCBmb3VuZCBtYXRjaGVzCisJY29tcGxldGVfYWRkKCkJCWFkZCB0byBmb3VuZCBtYXRjaGVzCisJY29tcGxldGVfY2hlY2soKQljaGVjayBpZiBjb21wbGV0aW9uIHNob3VsZCBiZSBhYm9ydGVkCisJcHVtdmlzaWJsZSgpCQljaGVjayBpZiB0aGUgcG9wdXAgbWVudSBpcyBkaXNwbGF5ZWQKIAogRm9sZGluZzoKIAlmb2xkY2xvc2VkKCkJCWNoZWNrIGZvciBhIGNsb3NlZCBmb2xkIGF0IGEgc3BlY2lmaWMgbGluZQogCWZvbGRjbG9zZWRlbmQoKQkJbGlrZSBmb2xkY2xvc2VkKCkgYnV0IHJldHVybiB0aGUgbGFzdCBsaW5lCiAJZm9sZGxldmVsKCkJCWNoZWNrIGZvciB0aGUgZm9sZCBsZXZlbCBhdCBhIHNwZWNpZmljIGxpbmUKIAlmb2xkdGV4dCgpCQlnZW5lcmF0ZSB0aGUgbGluZSBkaXNwbGF5ZWQgZm9yIGEgY2xvc2VkIGZvbGQKKwlmb2xkdGV4dHJlc3VsdCgpCWdldCB0aGUgdGV4dCBkaXNwbGF5ZWQgZm9yIGEgY2xvc2VkIGZvbGQKIAotU3ludGF4IGhpZ2hsaWdodGluZzoKK1N5bnRheCBhbmQgaGlnaGxpZ2h0aW5nOgogCWhsZXhpc3RzKCkJCWNoZWNrIGlmIGEgaGlnaGxpZ2h0IGdyb3VwIGV4aXN0cwogCWhsSUQoKQkJCWdldCBJRCBvZiBhIGhpZ2hsaWdodCBncm91cAogCXN5bklEKCkJCQlnZXQgc3ludGF4IElEIGF0IGEgc3BlY2lmaWMgcG9zaXRpb24KIAlzeW5JRGF0dHIoKQkJZ2V0IGEgc3BlY2lmaWMgYXR0cmlidXRlIG9mIGEgc3ludGF4IElECiAJc3luSUR0cmFucygpCQlnZXQgdHJhbnNsYXRlZCBzeW50YXggSUQKKwlkaWZmX2hsSUQoKQkJZ2V0IGhpZ2hsaWdodCBJRCBmb3IgZGlmZiBtb2RlIGF0IGEgcG9zaXRpb24KKwltYXRjaGFyZygpCQlnZXQgaW5mbyBhYm91dCB8Om1hdGNofCBhcmd1bWVudHMKKworU3BlbGxpbmc6CisJc3BlbGxiYWR3b3JkKCkJCWxvY2F0ZSBiYWRseSBzcGVsbGVkIHdvcmQgYXQgb3IgYWZ0ZXIgY3Vyc29yCisJc3BlbGxzdWdnZXN0KCkJCXJldHVybiBzdWdnZXN0ZWQgc3BlbGxpbmcgY29ycmVjdGlvbnMKKwlzb3VuZGZvbGQoKQkJcmV0dXJuIHRoZSBzb3VuZC1hLWxpa2UgZXF1aXZhbGVudCBvZiBhIHdvcmQKIAogSGlzdG9yeToKIAloaXN0YWRkKCkJCWFkZCBhbiBpdGVtIHRvIGEgaGlzdG9yeQpAQCAtNzIxLDE1ICs3ODAsMjMgQEAKIAloaXN0bnIoKQkJZ2V0IGhpZ2hlc3QgaW5kZXggb2YgYSBoaXN0b3J5IGxpc3QKIAogSW50ZXJhY3RpdmU6CisJYnJvd3NlKCkJCXB1dCB1cCBhIGZpbGUgcmVxdWVzdGVyCisJYnJvd3NlZGlyKCkJCXB1dCB1cCBhIGRpcmVjdG9yeSByZXF1ZXN0ZXIKIAljb25maXJtKCkJCWxldCB0aGUgdXNlciBtYWtlIGEgY2hvaWNlCiAJZ2V0Y2hhcigpCQlnZXQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgdXNlcgogCWdldGNoYXJtb2QoKQkJZ2V0IG1vZGlmaWVycyBmb3IgdGhlIGxhc3QgdHlwZWQgY2hhcmFjdGVyCiAJaW5wdXQoKQkJCWdldCBhIGxpbmUgZnJvbSB0aGUgdXNlcgorCWlucHV0bGlzdCgpCQlsZXQgdGhlIHVzZXIgcGljayBhbiBlbnRyeSBmcm9tIGEgbGlzdAogCWlucHV0c2VjcmV0KCkJCWdldCBhIGxpbmUgZnJvbSB0aGUgdXNlciB3aXRob3V0IHNob3dpbmcgaXQKIAlpbnB1dGRpYWxvZygpCQlnZXQgYSBsaW5lIGZyb20gdGhlIHVzZXIgaW4gYSBkaWFsb2cKIAlpbnB1dHNhdmUoKQkJc2F2ZSBhbmQgY2xlYXIgdHlwZWFoZWFkCiAJaW5wdXRyZXN0b3JlKCkJCXJlc3RvcmUgdHlwZWFoZWFkCiAKK0dVSToKKwlnZXRmb250bmFtZSgpCQlnZXQgbmFtZSBvZiBjdXJyZW50IGZvbnQgYmVpbmcgdXNlZAorCWdldHdpbnBvc3goKQkJWCBwb3NpdGlvbiBvZiB0aGUgR1VJIFZpbSB3aW5kb3cKKwlnZXR3aW5wb3N5KCkJCVkgcG9zaXRpb24gb2YgdGhlIEdVSSBWaW0gd2luZG93CisKIFZpbSBzZXJ2ZXI6CiAJc2VydmVybGlzdCgpCQlyZXR1cm4gdGhlIGxpc3Qgb2Ygc2VydmVyIG5hbWVzCiAJcmVtb3RlX3NlbmQoKQkJc2VuZCBjb21tYW5kIGNoYXJhY3RlcnMgdG8gYSBWaW0gc2VydmVyCkBAIC03NDAsOCArODA3LDE0IEBACiAJZm9yZWdyb3VuZCgpCQltb3ZlIHRoZSBWaW0gd2luZG93IHRvIHRoZSBmb3JlZ3JvdW5kCiAJcmVtb3RlX2ZvcmVncm91bmQoKQltb3ZlIHRoZSBWaW0gc2VydmVyIHdpbmRvdyB0byB0aGUgZm9yZWdyb3VuZAogCitXaW5kb3cgc2l6ZSBhbmQgcG9zaXRpb246CisJd2luaGVpZ2h0KCkJCWdldCBoZWlnaHQgb2YgYSBzcGVjaWZpYyB3aW5kb3cKKwl3aW53aWR0aCgpCQlnZXQgd2lkdGggb2YgYSBzcGVjaWZpYyB3aW5kb3cKKwl3aW5yZXN0Y21kKCkJCXJldHVybiBjb21tYW5kIHRvIHJlc3RvcmUgd2luZG93IHNpemVzCisJd2luc2F2ZXZpZXcoKQkJZ2V0IHZpZXcgb2YgY3VycmVudCB3aW5kb3cKKwl3aW5yZXN0dmlldygpCQlyZXN0b3JlIHNhdmVkIHZpZXcgb2YgY3VycmVudCB3aW5kb3cKKwogVmFyaW91czoKLQl0eXBlKCkJCQl0eXBlIG9mIGEgdmFyaWFibGUKIAltb2RlKCkJCQlnZXQgY3VycmVudCBlZGl0aW5nIG1vZGUKIAl2aXN1YWxtb2RlKCkJCWxhc3QgdmlzdWFsIG1vZGUgdXNlZAogCWhhc21hcHRvKCkJCWNoZWNrIGlmIGEgbWFwcGluZyBleGlzdHMKQEAgLTc0OSwyMyArODIyLDIwIEBACiAJbWFwYXJnKCkJCWdldCByaHMgb2YgYSBtYXBwaW5nCiAJZXhpc3RzKCkJCWNoZWNrIGlmIGEgdmFyaWFibGUsIGZ1bmN0aW9uLCBldGMuIGV4aXN0cwogCWhhcygpCQkJY2hlY2sgaWYgYSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBpbiBWaW0KLQlnZXRxZmxpc3QoKQkJbGlzdCBvZiBxdWlja2ZpeCBlcnJvcnMKLQlnZXRsb2NsaXN0KCkJCWxpc3Qgb2YgbG9jYXRpb24gbGlzdCBpdGVtcworCWNoYW5nZW5yKCkJCXJldHVybiBudW1iZXIgb2YgbW9zdCByZWNlbnQgY2hhbmdlCiAJY3Njb3BlX2Nvbm5lY3Rpb24oKQljaGVjayBpZiBhIGNzY29wZSBjb25uZWN0aW9uIGV4aXN0cwogCWRpZF9maWxldHlwZSgpCQljaGVjayBpZiBhIEZpbGVUeXBlIGF1dG9jb21tYW5kIHdhcyB1c2VkCiAJZXZlbnRoYW5kbGVyKCkJCWNoZWNrIGlmIGludm9rZWQgYnkgYW4gZXZlbnQgaGFuZGxlcgotCWdldHdpbnBvc3goKQkJWCBwb3NpdGlvbiBvZiB0aGUgR1VJIFZpbSB3aW5kb3cKLQlnZXR3aW5wb3N5KCkJCVkgcG9zaXRpb24gb2YgdGhlIEdVSSBWaW0gd2luZG93Ci0Jd2luaGVpZ2h0KCkJCWdldCBoZWlnaHQgb2YgYSBzcGVjaWZpYyB3aW5kb3cKLQl3aW53aWR0aCgpCQlnZXQgd2lkdGggb2YgYSBzcGVjaWZpYyB3aW5kb3cKKwogCWxpYmNhbGwoKQkJY2FsbCBhIGZ1bmN0aW9uIGluIGFuIGV4dGVybmFsIGxpYnJhcnkKIAlsaWJjYWxsbnIoKQkJaWRlbSwgcmV0dXJuaW5nIGEgbnVtYmVyCisKIAlnZXRyZWcoKQkJZ2V0IGNvbnRlbnRzIG9mIGEgcmVnaXN0ZXIKIAlnZXRyZWd0eXBlKCkJCWdldCB0eXBlIG9mIGEgcmVnaXN0ZXIKLQlzZXRxZmxpc3QoKQkJbW9kaWZ5IGEgcXVpY2tmaXggbGlzdAotCXNldGxvY2xpc3QoKQkJbW9kaWZ5IGEgbG9jYXRpb24gbGlzdAogCXNldHJlZygpCQlzZXQgY29udGVudHMgYW5kIHR5cGUgb2YgYSByZWdpc3RlcgorCiAJdGFnbGlzdCgpCQlnZXQgbGlzdCBvZiBtYXRjaGluZyB0YWdzCisJdGFnZmlsZXMoKQkJZ2V0IGEgbGlzdCBvZiB0YWdzIGZpbGVzCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKjQxLjcqCURlZmluaW5nIGEgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dCBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dAppbmRleCAxY2FjODgxLi44YmQ5ZGFkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKKysrIGIvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CkBAIC0xLDQgKzEsNCBAQAotKnZlcnNpb243LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA3CisqdmVyc2lvbjcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTI0MTEsNCArMjQxMSw3IEBACiAKIGdsb2IoJy9kaXIvXCRBQkMvKicpIGRpZG4ndCB3b3JrLgogCitXaGVuIHVzaW5nIHNldmVyYWwgdGFiIHBhZ2VzIGFuZCBjaGFuZ2luZyAnY21kaGVpZ2h0JyB0aGUgZGlzcGxheSBjb3VsZCBiZWNvbWUKK21lc3NlZCB1cC4gIE5vdyBzdG9yZSB0aGUgdmFsdWUgb2YgJ2NtZGhlaWdodCcgc2VwYXJhdGVseSBmb3IgZWFjaCB0YWIgcGFnZS4KKwogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3Npc3UudmltIGIvcnVudGltZS9zeW50YXgvc2lzdS52aW0KaW5kZXggZDcxYWEyMi4uMTY2ZjUwYiAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvc2lzdS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvc2lzdS52aW0KQEAgLTksOSArOSw4IEBACiAgIGZpbmlzaAogZWxzZQogZW5kaWYKLSIlIDEyIEVycm9ycz8KKyIlIDExIEVycm9ycz8KIHN5biBtYXRjaCBzaXN1X2Vycm9yIGNvbnRhaW5zPXNpc3VfY29udGFpbixzaXN1X2NvbnRyb2wsc2lzdV9tYXJrcGFyYSxzaXN1X21hcmssc2lzdV9jb250ZW50X2FsdCxzaXN1X2Vycm9yX3dzcGFjZSAiPCFbXmVpXVxTXCshPiIKLSIlIDExIEV4cHJlc3Npb24gU3Vic3RpdHV0aW9uOiBhbmQgQmFja3NsYXNoIE5vdGF0aW9uCiAiJSAxMCBNYXJrZXJzOiBFbmRub3RlIElkZW50aWZpZXJzLCBQYWdlYnJlYWtzIGV0Yy46IAogaWYgIWV4aXN0cygic2lzdV9ub19pZGVudGlmaWVycyIpCiAgIHN5biBtYXRjaCAgIHNpc3VfbWFya19lbmRub3RlICAgIlx+XiIKQEAgLTE5LDIwICsxOCwxNiBAQAogICBzeW4gbWF0Y2ggICBzaXN1X2JyZWFrICAgICAgICAgICI8YnI+XHw8YnIgLz4iCiAgIHN5biBtYXRjaCAgIHNpc3VfY29udHJvbCAgICAgICAgIjxwPlx8PC9wPlx8PHAgLz5cfDw6cFtibl0+IgogICBzeW4gbWF0Y2ggICBzaXN1X2h0bWwgICAgICAgICAgICI8Y2VudGVyPlx8PC9jZW50ZXI+IgotICBzeW4gbWF0Y2ggICBzaXN1X21hcmtwYXJhICAgICAgICJeX1woWzEyXVwqXD9cfFwqXClcc1wrIgotICBzeW4gbWF0Y2ggICBzaXN1X21hcmtwYXJhICAgICAgICIjWyAxXVx8XyMgIgogICBzeW4gbWF0Y2ggICBzaXN1X21hcmt0YWlsICAgICAgICJbfi1dIyIKICAgc3luIG1hdGNoICAgc2lzdV9odG1sICAgICAgICAgICAiPHRkPlx8PHRkIFx8PHRyPlx8PC90ZD5cfDwvdHI+XHw8dGFibGU+XHw8dGFibGUgXHw8L3RhYmxlPiIKICAgc3luIG1hdGNoICAgc2lzdV9jb250cm9sICAgICAgICAiXCIiCi0gIHN5biBtYXRjaCAgIHNpc3VfdW5kZXJsaW5lICAgICAgIlwoXlx8IFwpX1thLXpBLVowLTldXCtfXChbIC4sXVx8JFwpImhlPWUtMQorICBzeW4gbWF0Y2ggICBzaXN1X3VuZGVybGluZSAgICAgICJcKF5cfCBcKV9bYS16QS1aMC05XVwrX1woWyAuLF1cfCRcKSIKKyAgc3luIG1hdGNoICAgc2lzdV9udW1iZXIgICAgICAgICAiWzAtOWEtZl1cezMyXH1cfFswLTlhLWZdXHs2NFx9IgogICAibWV0YXZlcnNlIHNwZWNpZmljCiAgIHN5biBtYXRjaCAgIHNpc3Vfb2NuICAgICAgICAgICAgIjxcflxkXCs7XHdcZFwrO1x3XGRcKz4iCi0gIHN5biBtYXRjaCAgIHNpc3VfZGlnZXN0ICAgICAgICAgIjxbMC05YS1mXVx7MzJcfTpbMC05YS1mXVx7MzJcfT5cfDxbMC05YS1mXVx7MzJcfT4iCi0gIHN5biBtYXRjaCAgIHNpc3VfZGlnZXN0ICAgICAgICAgIjxbMC05YS1mXVx7NjRcfTpbMC05YS1mXVx7NjRcfT5cfDxbMC05YS1mXVx7NjRcfT4iCiAgIHN5biBtYXRjaCAgIHNpc3VfbWFya3RhaWwgICAgICAgIjxcfiM+IgogICBzeW4gbWF0Y2ggICBzaXN1X21hcmtwYXJhICAgICAgICI8OmlbMTJdPiIKICAgc3luIG1hdGNoICAgc2lzdV9saW5rICAgICAgICAgICAiIFwqXH5cU1wrIgotICBzeW4gbWF0Y2ggICBzaXN1X2FjdGlvbiAgICAgICAgICJePDwuXCsiCiAgIHN5biBtYXRjaCAgIHNpc3VfYWN0aW9uICAgICAgICAgIl48Omluc2VydFxkXCs+IgogICBzeW4gbWF0Y2ggICBzaXN1X2NvbnRhaW4gICAgICAgICI8OmU+IgogZW5kaWYKQEAgLTQ2LDI0ICs0MSwyNSBAQAogIiUgNyBTaW1wbGUgRW5jbG9zZWQgTWFya3VwOgogIiBTaW1wbGUgTWFya3VwOgogIiUgICBoZWFkZXIKLXN5biByZWdpb24gc2lzdV9oZWFkZXIgY29udGFpbnM9c2lzdV9lcnJvcixzaXN1X2Vycm9yX3dzcGFjZSxzaXN1X2NvbnRlbnRfYWx0LHNpc3VfbGluayxzaXN1X2xpbmtlZCxzaXN1X2JyZWFrIG1hdGNoZ3JvdXA9c2lzdV9oZWFkZXIgc3RhcnQ9IjBcfiIgZW5kPSIkIgorc3luIHJlZ2lvbiBzaXN1X2hlYWRlcl9jb250ZW50IGNvbnRhaW5zPXNpc3VfZXJyb3Isc2lzdV9lcnJvcl93c3BhY2Usc2lzdV9jb250ZW50X2FsdCxzaXN1X2xpbmssc2lzdV9saW5rZWQsc2lzdV9icmVhayBtYXRjaGdyb3VwPXNpc3VfaGVhZGVyIHN0YXJ0PSJeMFx+XChcU1wrXHxbXi1dXCkiIGVuZD0iJCIKICIlICAgaGVhZGluZ3MKLXN5biByZWdpb24gc2lzdV9oZWFkaW5nIGNvbnRhaW5zPXNpc3VfbWFya19lbmRub3RlLHNpc3VfY29udGVudF9lbmRub3RlLHNpc3VfbWFya3RhaWwsc2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X29jbixzaXN1X2RpZ2VzdCxzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfd3NwYWNlLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X2hlYWRpbmcgc3RhcnQ9IlsxLThdXH5bXi1dIiBlbmQ9IiQiCitzeW4gcmVnaW9uIHNpc3VfaGVhZGluZyBjb250YWlucz1zaXN1X21hcmtfZW5kbm90ZSxzaXN1X2NvbnRlbnRfZW5kbm90ZSxzaXN1X21hcmt0YWlsLHNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9vY24sc2lzdV9lcnJvcixzaXN1X2Vycm9yX3dzcGFjZSxzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9zdHJ1Y3R1cmUgc3RhcnQ9Il5bMS04XVx+XChcU1wrXHxbXi1dXCkiIGVuZD0iJCIKICIlICAgZ3JvdXBlZCB0ZXh0CiBzeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X2NvbnRhaW4gc3RhcnQ9InRhYmxley5cKyIgZW5kPSJ9dGFibGUiCiBzeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X2NvbnRhaW4gc3RhcnQ9Int0XH5ofSIgZW5kPSIkJCIKIHN5biByZWdpb24gc2lzdV9jb250ZW50X2FsdCBjb250YWlucz1zaXN1X21hcmtfZW5kbm90ZSxzaXN1X2NvbnRlbnRfZW5kbm90ZSxzaXN1X2xpbmssc2lzdV9tYXJrLHNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9jb250YWluIHN0YXJ0PSJeXChhbHRcfGdyb3VwXHxwb2VtXCl7IiBlbmQ9Il59XChhbHRcfGdyb3VwXHxwb2VtXCkiCiBzeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfY29udGFpbiBzdGFydD0iXmNvZGV7IiBlbmQ9Il59Y29kZSIKICIlICAgZW5kbm90ZXMKLXN5biByZWdpb24gc2lzdV9jb250ZW50X2VuZG5vdGUgY29udGFpbnM9c2lzdV9kaWdlc3Qsc2lzdV9saW5rLHNpc3Vfc3RyaWtlb3V0LHNpc3VfdW5kZXJsaW5lLHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3dzcGFjZSxzaXN1X2Vycm9yX3NwZWxsLHNpc3VfbWFyayxzaXN1X2JyZWFrIG1hdGNoZ3JvdXA9c2lzdV9tYXJrX2VuZG5vdGUgc3RhcnQ9Ilx+eyIgZW5kPSJ9XH4iIHNraXA9IlxuIgorc3luIHJlZ2lvbiBzaXN1X2NvbnRlbnRfZW5kbm90ZSBjb250YWlucz1zaXN1X2xpbmssc2lzdV9zdHJpa2VvdXQsc2lzdV91bmRlcmxpbmUsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfd3NwYWNlLHNpc3VfZXJyb3Jfc3BlbGwsc2lzdV9tYXJrLHNpc3VfYnJlYWsgbWF0Y2hncm91cD1zaXN1X21hcmtfZW5kbm90ZSBzdGFydD0iXH57IiBlbmQ9In1cfiIgc2tpcD0iXG4iCiBzeW4gcmVnaW9uIHNpc3VfY29udGVudF9lbmRub3RlIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2xpbmssc2lzdV9pZGVudGlmaWVyLHNpc3VfZXJyb3Isc2lzdV9lcnJvcl93c3BhY2Usc2lzdV9lcnJvcl9zcGVsbCxzaXN1X21hcmssc2lzdV9icmVhayBtYXRjaGdyb3VwPXNpc3VfbWFya19lbmRub3RlIHN0YXJ0PSJcXlx+IiBlbmQ9IlxuXG4iCiAiJSAgIGltYWdlcwotc3luIHJlZ2lvbiBzaXN1X2xpbmtlZCBjb250YWlucz1zaXN1X2ZvbnRmYWNlLHNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X2xpbmsgc3RhcnQ9InsiIGVuZD0ifVwoXChodHRwOi8vXHxcLlwuL1wpXFNcK1x8aW1hZ2VcKSIgb25lbGluZQotInN5biByZWdpb24gc2lzdV9saW5rZWQgY29udGFpbnM9c2lzdV9mb250ZmFjZSxzaXN1X3N0cmlrZW91dCxzaXN1X251bWJlcixzaXN1X2NvbnRyb2wsc2lzdV9pZGVudGlmaWVyLHNpc3VfZXJyb3Isc2lzdV9lcnJvcl9zcGVsbCBtYXRjaGdyb3VwPXNpc3VfbGluayBzdGFydD0ieyIgZW5kPSJ9XChcKGh0dHA6Ly9cfFwuXC4vXClcU1wrXHxpbWFnZVwpIiBvbmVsaW5lCi0ic2lzdV9pZGVudGlmaWVyIGZpeAotIiJzeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X2xpbmsgc3RhcnQ9InsiIGVuZD0ifVwoaHR0cFxTXCtcfGltYWdlXCkiIG9uZWxpbmUKK3N5biByZWdpb24gc2lzdV9saW5rZWQgY29udGFpbnM9c2lzdV9mb250ZmFjZSxzaXN1X3N0cmlrZW91dCxzaXN1X251bWJlcixzaXN1X2NvbnRyb2wsc2lzdV9pZGVudGlmaWVyLHNpc3VfZXJyb3Isc2lzdV9lcnJvcl9zcGVsbCBtYXRjaGdyb3VwPXNpc3VfbGluayBzdGFydD0ieyIgZW5kPSJ9XChcKGh0dHA6Ly9cfFwuXC4vXClcU1wrXHxpbWFnZVwpIiBvbmVsaW5lCisiJSAgIGxpbmUgb3BlcmF0aW9ucworc3luIHJlZ2lvbiBzaXN1X2xpbmsgY29udGFpbnM9c2lzdV9lcnJvcixzaXN1X2Vycm9yX3dzcGFjZSxzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9hY3Rpb24gc3RhcnQ9Il48PFxzKnxbYS16QS1aMC05Xi5fLV1cK3xAfFthLXpBLVowLTleLl8tXVwrfCJycz1zKzIgZW5kPSIkIgorc3luIHJlZ2lvbiBzaXN1X2NvbnRyb2wgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9pZGVudGlmaWVyLHNpc3VfY29udGVudF9lbmRub3RlLHNpc3VfbWFya19lbmRub3RlLHNpc3VfZXJyb3Isc2lzdV9lcnJvcl93c3BhY2Usc2lzdV9lcnJvcl9zcGVsbCBtYXRjaGdyb3VwPXNpc3VfY29udHJvbCBzdGFydD0iXChcKF5cfCBcKSFfIFx8PDpiPlwpIiBlbmQ9IiQiCitzeW4gcmVnaW9uIHNpc3Vfbm9ybWFsIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfaWRlbnRpZmllcixzaXN1X2NvbnRlbnRfZW5kbm90ZSxzaXN1X21hcmtfZW5kbm90ZSxzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfd3NwYWNlLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X21hcmtwYXJhIHN0YXJ0PSJeX1woWzEyXVwqXD9cfFwqXCkgIiBlbmQ9IiQiCitzeW4gcmVnaW9uIHNpc3Vfbm9ybWFsIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfaWRlbnRpZmllcixzaXN1X2NvbnRlbnRfZW5kbm90ZSxzaXN1X21hcmtfZW5kbm90ZSxzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfd3NwYWNlLHNpc3VfZXJyb3Jfc3BlbGwgbWF0Y2hncm91cD1zaXN1X21hcmtwYXJhIHN0YXJ0PSJeXCgjWyAxXVx8XyMgXCkiIGVuZD0iJCIKICIlICAgZm9udCBmYWNlIGN1cmx5IGJyYWNrZXRzCi1zeW4gcmVnaW9uIHNpc3VfY29udHJvbCBjb250YWlucz1zaXN1X3N0cmlrZW91dCxzaXN1X2lkZW50aWZpZXIsc2lzdV9jb250ZW50X2VuZG5vdGUsc2lzdV9tYXJrX2VuZG5vdGUsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9jb250cm9sIHN0YXJ0PSJcKFwoXlx8IFwpIV8gXHw8OmI+XCkiIGVuZD0iJCIKIHN5biByZWdpb24gc2lzdV9jb250cm9sIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9mb250ZmFjZSBzdGFydD0iXCp7IiBlbmQ9In1cKiIKIHN5biByZWdpb24gc2lzdV9jb250cm9sIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9mb250ZmFjZSBzdGFydD0iIXsiIGVuZD0ifSEiCiBzeW4gcmVnaW9uIHNpc3VfdW5kZXJsaW5lIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9mb250ZmFjZSBzdGFydD0iX3siIGVuZD0ifV8iCkBAIC03MiwyMyArNjgsMTkgQEAKIHN5biByZWdpb24gc2lzdV9pZGVudGlmaWVyIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9mb250ZmFjZSBzdGFydD0iXF57IiBlbmQ9In1cXiIKIHN5biByZWdpb24gc2lzdV9pZGVudGlmaWVyIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsIG1hdGNoZ3JvdXA9c2lzdV9mb250ZmFjZSBzdGFydD0iLHsiIGVuZD0ifSwiIAogc3luIHJlZ2lvbiBzaXN1X3N0cmlrZW91dCBjb250YWlucz1zaXN1X2Vycm9yIG1hdGNoZ3JvdXA9c2lzdV9mb250ZmFjZSBzdGFydD0iLXsiIGVuZD0ifS0iIAotc3luIHJlZ2lvbiBzaXN1X2NvbnRyb2wgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfY29udGVudF9hbHQgc3RhcnQ9IjxiPiIgZW5kPSI8L2I+IiBvbmVsaW5lCi1zeW4gcmVnaW9uIHNpc3VfY29udHJvbCBjb250YWlucz1zaXN1X2Vycm9yIG1hdGNoZ3JvdXA9c2lzdV9jb250ZW50X2FsdCBzdGFydD0iPGVtPiIgZW5kPSI8L2VtPiIgb25lbGluZQotc3luIHJlZ2lvbiBzaXN1X2lkZW50aWZpZXIgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfY29udGVudF9hbHQgc3RhcnQ9Ijx1PiIgZW5kPSI8L3U+IiBvbmVsaW5lCi1zeW4gcmVnaW9uIHNpc3VfaWRlbnRpZmllciBjb250YWlucz1zaXN1X2Vycm9yIG1hdGNoZ3JvdXA9c2lzdV9jb250ZW50X2FsdCBzdGFydD0iPGk+IiBlbmQ9IjwvaT4iIG9uZWxpbmUKLXN5biByZWdpb24gc2lzdV9pZGVudGlmaWVyIGNvbnRhaW5zPXNpc3VfZXJyb3IgbWF0Y2hncm91cD1zaXN1X2NvbnRlbnRfYWx0IHN0YXJ0PSI8aW5zPiIgZW5kPSI8L2lucz4iIHNraXA9IlxcXFxcfFxcJyIgb25lbGluZQotc3luIHJlZ2lvbiBzaXN1X2lkZW50aWZpZXIgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfY29udGVudF9hbHQgc3RhcnQ9IjxkZWw+IiBlbmQ9IjwvZGVsPiIgb25lbGluZQogc3luIHJlZ2lvbiBzaXN1X2h0bWwgY29udGFpbnM9c2lzdV9lcnJvciBjb250YWlucz1zaXN1X3N0cmlrZW91dCBtYXRjaGdyb3VwPXNpc3VfY29udGFpbiBzdGFydD0iPGEgaHJlZj1cIi5cey19XCI+IiBlbmQ9IjwvYT4iIG9uZWxpbmUKICIlICAgc2luZ2xlIHdvcmRzIGJvbGQgaXRhbGljaXNlIGV0Yy4gIndvcmtvbgogc3luIHJlZ2lvbiBzaXN1X2NvbnRyb2wgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfY29udHJvbCBzdGFydD0iXChbIChdXHxeXClcKlteXHx7XG5cflxcXSJocz1lLTEgZW5kPSJcKiJoZT1lLTAgc2tpcD0iW2EtekEtWjAtOSddIiBvbmVsaW5lCiBzeW4gcmVnaW9uIHNpc3VfaWRlbnRpZmllciBjb250YWlucz1zaXN1X2Vycm9yIG1hdGNoZ3JvdXA9c2lzdV9jb250ZW50X2FsdCBzdGFydD0iXChbIF1cfF5cKS9bXnsgXHxcblxcXSJocz1lLTEgZW5kPSIvXFsgXC5cXSIgc2tpcD0iW2EtekEtWjAtOSddIiBvbmVsaW5lCi0ic3luIHJlZ2lvbiBzaXN1X3VuZGVybGluZSBtYXRjaGdyb3VwPXNpc3VfdW5kZXJsaW5lIHN0YXJ0PSJcKFsgKF1cfF5cKV9cKFteICEqe1xcXVtcd11cfFteMTJdW14qXVwpImhzPWUtMiBlbmQ9IlwoX1woWyApXC5dXHwkXClcfCBcKSJoZT1lLTEgc2tpcD0iW2EtekEtWjAtOSddIiBvbmVsaW5lCiAiJSAgIGh0bWwKLXN5biByZWdpb24gc2lzdV9udW1iZXIgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwsc2lzdV9tYXJrIG1hdGNoZ3JvdXA9c2lzdV9jb250YWluIHN0YXJ0PSI8Yj4iIGVuZD0iPC9iPiIgc2tpcD0iXG4iCi1zeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwsc2lzdV9tYXJrIG1hdGNoZ3JvdXA9c2lzdV9jb250YWluIHN0YXJ0PSI8aT4iIGVuZD0iPC9pPiIgc2tpcD0iXG4iCi1zeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwsc2lzdV9tYXJrIG1hdGNoZ3JvdXA9c2lzdV9jb250YWluIHN0YXJ0PSI8dT4iIGVuZD0iPC91PiIgc2tpcD0iXG4iCitzeW4gcmVnaW9uIHNpc3VfbnVtYmVyIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsLHNpc3VfbWFyayBtYXRjaGdyb3VwPXNpc3VfaHRtbCBzdGFydD0iPGI+IiBlbmQ9IjwvYj4iIHNraXA9IlxuIiBvbmVsaW5lCitzeW4gcmVnaW9uIHNpc3VfbnVtYmVyIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsLHNpc3VfbWFyayBtYXRjaGdyb3VwPXNpc3VfaHRtbCBzdGFydD0iPGVtPiIgZW5kPSI8L2VtPiIgb25lbGluZQorc3luIHJlZ2lvbiBzaXN1X2NvbnRlbnRfYWx0IGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsLHNpc3VfbWFyayBtYXRjaGdyb3VwPXNpc3VfaHRtbCBzdGFydD0iPGk+IiBlbmQ9IjwvaT4iIHNraXA9IlxuIiBvbmVsaW5lCitzeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9zdHJpa2VvdXQsc2lzdV9udW1iZXIsc2lzdV9jb250cm9sLHNpc3VfaWRlbnRpZmllcixzaXN1X2Vycm9yLHNpc3VfZXJyb3Jfc3BlbGwsc2lzdV9tYXJrIG1hdGNoZ3JvdXA9c2lzdV9odG1sIHN0YXJ0PSI8dT4iIGVuZD0iPC91PiIgc2tpcD0iXG4iIG9uZWxpbmUKK3N5biByZWdpb24gc2lzdV9pZGVudGlmaWVyIGNvbnRhaW5zPXNpc3Vfc3RyaWtlb3V0LHNpc3VfbnVtYmVyLHNpc3VfY29udHJvbCxzaXN1X2lkZW50aWZpZXIsc2lzdV9lcnJvcixzaXN1X2Vycm9yX3NwZWxsLHNpc3VfbWFyayBtYXRjaGdyb3VwPXNpc3VfaHRtbCBzdGFydD0iPGlucz4iIGVuZD0iPC9pbnM+IiBza2lwPSJcXFxcXHxcXCciIG9uZWxpbmUKK3N5biByZWdpb24gc2lzdV9pZGVudGlmaWVyIGNvbnRhaW5zPXNpc3VfZXJyb3IgbWF0Y2hncm91cD1zaXN1X2h0bWwgc3RhcnQ9IjxkZWw+IiBlbmQ9IjwvZGVsPiIgb25lbGluZQogIiUgICBtaXNjCi1zeW4gcmVnaW9uIHNpc3VfaWRlbnRpZmllciBjb250YWlucz1zaXN1X2Vycm9yIG1hdGNoZ3JvdXA9c2lzdV9jb250ZW50X2FsdCBzdGFydD0iXF5bXntcfFxuXFxdIiBlbmQ9IlxeWyAsLjs6J30pXFxcbl0iIHNraXA9IlthLXpBLVowLTknXSIgb25lbGluZQorc3luIHJlZ2lvbiBzaXN1X2lkZW50aWZpZXIgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfZm9udGZhY2Ugc3RhcnQ9IlxeW14ge1x8XG5cXF0icnM9cysxIGVuZD0iXF5bICwuOzonfSlcXFxuXSIgc2tpcD0iW2EtekEtWjAtOSddIiBvbmVsaW5lCiAiJSBtZXRhdmVyc2UKIHN5biByZWdpb24gc2lzdV9jb250ZW50X2FsdCBjb250YWlucz1zaXN1X3N0cmlrZW91dCxzaXN1X251bWJlcixzaXN1X2NvbnRyb2wsc2lzdV9pZGVudGlmaWVyLHNpc3VfZXJyb3Isc2lzdV9lcnJvcl9zcGVsbCBtYXRjaGdyb3VwPXNpc3VfY29udGFpbiBzdGFydD0iPDpUYWJsZS5cey19PiIgZW5kPSI8OlRhYmxlWy1fXWVuZD4iCiBzeW4gcmVnaW9uIHNpc3VfY29udGVudF9hbHQgY29udGFpbnM9c2lzdV9lcnJvciBtYXRjaGdyb3VwPXNpc3VfY29udGFpbiBzdGFydD0iPDpjb2RlPiIgZW5kPSI8OmNvZGVbLV9dZW5kPiIKQEAgLTEwMSw4ICs5Myw3IEBACiAgIHN5biByZWdpb24gIHNpc3VfY29udGVudF9hbHQgIG1hdGNoZ3JvdXA9c2lzdV9jb250cm9sIHN0YXJ0PSJeXHMqZGVmXHMiIG1hdGNoZ3JvdXA9Tk9ORSBlbmQ9Ils/IV1cfFw+IiBza2lwPSJcLlx8XCg6OlwpIiBvbmVsaW5lCiBlbmRpZiAiIEV4cGVuc2l2ZT8KICIlIDUgSGVhZGVyczogYW5kIEhlYWRpbmdzIChEb2N1bWVudCBJbnN0cnVjdGlvbnMpCi0ic3luIG1hdGNoICAgc2lzdV9oZWFkZXIgY29udGFpbnM9c2lzdV9lcnJvcixzaXN1X2Vycm9yX3dzcGFjZSxzaXN1X21hcmsgIjBcfi4qIgotc3luIG1hdGNoICAgc2lzdV9jb21tZW50IGNvbnRhaW5zPXNpc3VfZXJyb3IgIl4lIC4qXHxeJSUgLioiCitzeW4gbWF0Y2ggICBzaXN1X2NvbW1lbnQgIl4lIC4qXHxeJSUgLioiCiBzeW4gbWF0Y2ggICBzaXN1X2NvbnRyb2wgY29udGFpbnM9c2lzdV9lcnJvcixzaXN1X2Vycm9yX3dzcGFjZSAiNFx+ISBcU1wrIgogc3luIHJlZ2lvbiAgc2lzdV9tYXJrcGFyYSBjb250YWlucz1zaXN1X2Vycm9yLHNpc3VfZXJyb3Jfd3NwYWNlIHN0YXJ0PSJePWJlZ2luIiBlbmQ9Il49ZW5kLiokIgogIiUgNCBFcnJvcnM/CkBAIC0xMTAsNiArMTAxLDcgQEAKIHN5biBtYXRjaCBzaXN1X2Vycm9yX3dzcGFjZSBjb250YWlucz1zaXN1X2Vycm9yX3dzcGFjZSAiXHNcc1wrIgogc3luIG1hdGNoIHNpc3VfZXJyb3Jfd3NwYWNlIGNvbnRhaW5zPXNpc3VfZXJyb3Jfd3NwYWNlICAiIFxzKiQiCiBzeW4gbWF0Y2ggc2lzdV9lcnJvciBjb250YWlucz1zaXN1X2Vycm9yLHNpc3VfZXJyb3Jfd3NwYWNlICJbXiAofV1odHRwOlxTXCsiCitzeW4gbWF0Y2ggc2lzdV9lcnJvciBjb250YWlucz1zaXN1X2Vycm9yX3dzcGFjZSAiXHRcKyIKIHN5biBtYXRjaCBzaXN1X2Vycm9yIGNvbnRhaW5zPXNpc3VfZXJyb3IgImh0dHA6XFNcK1t9PjxdIgogc3luIG1hdGNoIHNpc3VfZXJyb3IgY29udGFpbnM9c2lzdV9lcnJvciAiXChbISovX1wrLF5dXCl7XChbXihcfVwxKV1cKVx7LX1cblxuIgogc3luIG1hdGNoIHNpc3VfZXJyb3IgY29udGFpbnM9c2lzdV9lcnJvciAiXltcLVx+XXtbXntdXHstfVxuXG4iCkBAIC0xMzksOCArMTMxLDExIEBACiAgICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgZGVmIGxpbmsgPGFyZ3M+CiAgIGVuZGlmCiAiJSAxIERlZmluZWQKKyAgSGlMaW5rIHNpc3Vfbm9ybWFsICAgICAgICAgIE5vcm1hbAogICBIaUxpbmsgc2lzdV9oZWFkZXIgICAgICAgICAgUHJlUHJvYworICBIaUxpbmsgc2lzdV9oZWFkZXJfY29udGVudCAgU3RhdGVtZW50CiAgIEhpTGluayBzaXN1X2hlYWRpbmcgICAgICAgICBUaXRsZQorICBIaUxpbmsgc2lzdV9zdHJ1Y3R1cmUgICAgICAgT3BlcmF0b3IKICAgSGlMaW5rIHNpc3VfY29udGFpbiAgICAgICAgIEluY2x1ZGUKICAgSGlMaW5rIHNpc3VfbWFya19lbmRub3RlICAgIEluY2x1ZGUKICAgSGlMaW5rIHNpc3VfbGluayAgICAgICAgICAgIE5vblRleHQKQEAgLTE1MSw3ICsxNDYsNiBAQAogICBIaUxpbmsgc2lzdV9jb250ZW50X2VuZG5vdGUgU3BlY2lhbAogICBIaUxpbmsgc2lzdV9jb250cm9sICAgICAgICAgRGVmaW5lCiAgIEhpTGluayBzaXN1X29jbiAgICAgICAgICAgICBJbmNsdWRlCi0gIEhpTGluayBzaXN1X2RpZ2VzdCAgICAgICAgICBJZGVudGlmaWVyCiAgIEhpTGluayBzaXN1X251bWJlciAgICAgICAgICBOdW1iZXIKICAgSGlMaW5rIHNpc3VfaWRlbnRpZmllciAgICAgIEZ1bmN0aW9uCiAgIEhpTGluayBzaXN1X3VuZGVybGluZSAgICAgICBVbmRlcmxpbmVkCkBAIC0xNjUsOCArMTU5LDYgQEAKICAgSGlMaW5rIHNpc3VfZXJyb3Jfc3BlbGwgICAgIFNwZWxsRXJyb3JzICJsaW5lIGRvZXMgbm90aGluZwogICBIaUxpbmsgc2lzdV9lcnJvcl93c3BhY2UgICAgRXJyb3IKICAgSGlMaW5rIHNpc3VfZXJyb3IgICAgICAgICAgIEVycm9yCi0gICJIaUxpbmsgc2lzdV8gICAgICAgICAgICAgICAgU3RhdGVtZW50Ci0gICJIaUxpbmsgc2lzdV8gICAgICAgICAgICAgICAgT3BlcmF0b3IKICAgZGVsY29tbWFuZCBIaUxpbmsKIGVuZGlmCiBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJzaXN1IgpkaWZmIC0tZ2l0IGEvc3JjL2d1aS5jIGIvc3JjL2d1aS5jCmluZGV4IDRjN2M3NzUuLjIwOGI3MjEgMTAwNjQ0Ci0tLSBhL3NyYy9ndWkuYworKysgYi9zcmMvZ3VpLmMKQEAgLTU5MSw3ICs1OTEsNyBAQAogCS8qIFdoZW4gJ2NtZGhlaWdodCcgd2FzIHNldCBkdXJpbmcgc3RhcnR1cCBpdCBtYXkgbm90IGhhdmUgdGFrZW4KIAkgKiBlZmZlY3QgeWV0LiAqLwogCWlmIChwX2NoICE9IDFMKQotCSAgICBjb21tYW5kX2hlaWdodCgtMUwpOworCSAgICBjb21tYW5kX2hlaWdodCgpOwogCiAJcmV0dXJuOwogICAgIH0KQEAgLTM0OTcsNiArMzQ5NywyNSBAQAogICAgIHJldHVybiBUUlVFOwogfQogCisvKgorICogU2VuZCBhIHRhYmxpbmUgbWVudSBldmVudAorICovCisgICAgdm9pZAorc2VuZF90YWJsaW5lX21lbnVfZXZlbnQodGFiaWR4LCBldmVudCkKKyAgICBpbnQJICAgIHRhYmlkeDsKKyAgICBpbnQJICAgIGV2ZW50OworeworICAgIGNoYXJfdQkgICAgc3RyaW5nWzNdOworCisgICAgc3RyaW5nWzBdID0gQ1NJOworICAgIHN0cmluZ1sxXSA9IEtTX1RBQk1FTlU7CisgICAgc3RyaW5nWzJdID0gS0VfRklMTEVSOworICAgIGFkZF90b19pbnB1dF9idWYoc3RyaW5nLCAzKTsKKyAgICBzdHJpbmdbMF0gPSB0YWJpZHg7CisgICAgc3RyaW5nWzFdID0gKGNoYXJfdSkobG9uZylldmVudDsKKyAgICBhZGRfdG9faW5wdXRfYnVmX2NzaShzdHJpbmcsIDIpOworfQorCiAjZW5kaWYKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9ndWlfZ3RrX3gxMS5jIGIvc3JjL2d1aV9ndGtfeDExLmMKaW5kZXggODMyOTMzYS4uYWRiNjAzYSAxMDA2NDQKLS0tIGEvc3JjL2d1aV9ndGtfeDExLmMKKysrIGIvc3JjL2d1aV9ndGtfeDExLmMKQEAgLTMxMjgsMTYgKzMxMjgsOSBAQAogICAgIHN0YXRpYyB2b2lkCiB0YWJsaW5lX21lbnVfaGFuZGxlcihHdGtNZW51SXRlbSAqaXRlbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQogewotICAgIGNoYXJfdQlzdHJpbmdbM107CiAKICAgICAvKiBBZGQgdGhlIHN0cmluZyBjbWQgaW50byBpbnB1dCBidWZmZXIgKi8KLSAgICBzdHJpbmdbMF0gPSBDU0k7Ci0gICAgc3RyaW5nWzFdID0gS1NfVEFCTUVOVTsKLSAgICBzdHJpbmdbMl0gPSBLRV9GSUxMRVI7Ci0gICAgYWRkX3RvX2lucHV0X2J1ZihzdHJpbmcsIDMpOwotICAgIHN0cmluZ1swXSA9IGNsaWNrZWRfcGFnZTsKLSAgICBzdHJpbmdbMV0gPSAoY2hhcl91KShsb25nKXVzZXJfZGF0YTsKLSAgICBhZGRfdG9faW5wdXRfYnVmX2NzaShzdHJpbmcsIDIpOworICAgIHNlbmRfdGFibGluZV9tZW51X2V2ZW50KGNsaWNrZWRfcGFnZSwgKGludCkobG9uZyl1c2VyX2RhdGEpOwogCiAgICAgaWYgKGd0a19tYWluX2xldmVsKCkgPiAwKQogCWd0a19tYWluX3F1aXQoKTsKZGlmZiAtLWdpdCBhL3NyYy9ndWlfbW90aWYuYyBiL3NyYy9ndWlfbW90aWYuYwppbmRleCBhOThjOWQxLi40Y2FlY2MzIDEwMDY0NAotLS0gYS9zcmMvZ3VpX21vdGlmLmMKKysrIGIvc3JjL2d1aV9tb3RpZi5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8WG0vVG9nZ2xlQkcuaD4KICNpbmNsdWRlIDxYbS9TZXBhcmF0b0cuaD4KICNpbmNsdWRlIDxYbS9Ob3RlYm9vay5oPgorI2luY2x1ZGUgPFhtL1htUC5oPgogCiAjaW5jbHVkZSA8WDExL2tleXN5bS5oPgogI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgpAQCAtMTUxLDE5ICsxNTIsNTIgQEAKICAgICBXaWRnZXQJdzsKICAgICBYdFBvaW50ZXIJY2xpZW50X2RhdGEsIGNhbGxfZGF0YTsKIHsKLSAgICBjaGFyX3UJc3RyaW5nWzNdOwogICAgIGludAkJY21kLCB0YWJfaWR4OwogCiAgICAgWHRWYUdldFZhbHVlcyh3LCBYbU51c2VyRGF0YSwgJmNtZCwgTlVMTCk7CiAgICAgWHRWYUdldFZhbHVlcyh0YWJMaW5lX21lbnUsIFhtTnVzZXJEYXRhLCAmdGFiX2lkeCwgTlVMTCk7CiAKLSAgICBzdHJpbmdbMF0gPSBDU0k7Ci0gICAgc3RyaW5nWzFdID0gS1NfVEFCTUVOVTsKLSAgICBzdHJpbmdbMl0gPSBLRV9GSUxMRVI7Ci0gICAgYWRkX3RvX2lucHV0X2J1ZihzdHJpbmcsIDMpOwotICAgIHN0cmluZ1swXSA9IHRhYl9pZHg7Ci0gICAgc3RyaW5nWzFdID0gKGNoYXJfdSkobG9uZyljbWQ7Ci0gICAgYWRkX3RvX2lucHV0X2J1Zl9jc2koc3RyaW5nLCAyKTsKKyAgICBzZW5kX3RhYmxpbmVfbWVudV9ldmVudCh0YWJfaWR4LCBjbWQpOworfQorCisvKgorICogVGFibGluZSBzaW5nbGUgbW91c2UgY2xpY2sgdGltZW91dCBoYW5kbGVyCisgKi8KKy8qQVJHU1VTRUQqLworICAgIHN0YXRpYyB2b2lkCittb3RpZl90YWJsaW5lX3RpbWVyX2NiICh0aW1lZF9vdXQsIGludGVydmFsX2lkKQorICAgIFh0UG9pbnRlcgkJdGltZWRfb3V0OworICAgIFh0SW50ZXJ2YWxJZAkqaW50ZXJ2YWxfaWQ7Cit7CisgICAgKigoaW50ICopdGltZWRfb3V0KSA9IFRSVUU7Cit9CisKKy8qCisgKiBjaGVjayBpZiB0aGUgdGFibGluZSB0YWIgc2Nyb2xsZXIgaXMgY2xpY2tlZAorICovCisgICAgc3RhdGljIGludAordGFibGluZV9zY3JvbGxlcl9jbGlja2VkKHNjcm9sbGVyX25hbWUsIGV2ZW50KQorICAgIGNoYXIJCSpzY3JvbGxlcl9uYW1lOworICAgIFhCdXR0b25QcmVzc2VkRXZlbnQgKmV2ZW50OworeworICAgIFdpZGdldAl0YWJfc2Nyb2xsX3c7CisgICAgUG9zaXRpb24JcG9zX3gsIHBvc195OworICAgIERpbWVuc2lvbgl3aWR0aCwgaGVpZ2h0OworCisgICAgdGFiX3Njcm9sbF93ID0gWHROYW1lVG9XaWRnZXQodGFiTGluZSwgc2Nyb2xsZXJfbmFtZSk7CisgICAgaWYgKHRhYl9zY3JvbGxfdyAhPSAoV2lkZ2V0KTApIHsKKwlYdFZhR2V0VmFsdWVzKHRhYl9zY3JvbGxfdywgWG1OeCwgJnBvc194LCBYbU55LCAmcG9zX3ksIFhtTndpZHRoLAorCQkgICAgICAmd2lkdGgsIFhtTmhlaWdodCwgJmhlaWdodCwgTlVMTCk7CisJaWYgKHBvc194ID49IDApIHsKKwkgICAgLyogVGFiIHNjcm9sbGVyIChuZXh0KSBpcyB2aXNpYmxlICovCisJICAgIGlmICgoZXZlbnQtPnggPj0gcG9zX3gpICYmIChldmVudC0+eCA8PSBwb3NfeCArIHdpZHRoKSAmJgorCQkoZXZlbnQtPnkgPj0gcG9zX3kpICYmIChldmVudC0+eSA8PSBwb3NfeSArIGhlaWdodCkpIHsKKwkJLyogQ2xpY2tlZCBvbiB0aGUgc2Nyb2xsZXIgKi8KKwkJcmV0dXJuIFRSVUU7CisJICAgIH0KKwl9CisgICAgfQorICAgIHJldHVybiBGQUxTRTsKIH0KIAogLypBUkdTVVNFRCovCkBAIC0xNzksMTUgKzIxMyw0NyBAQAogICAgIGludAkJCQl0YWJfaWR4ID0gMDsKICAgICBXaWRnZXRMaXN0CQkJY2hpbGRyZW47CiAgICAgQ2FyZGluYWwJCQludW1DaGlsZHJlbjsKKyAgICBzdGF0aWMgWHRJbnRlcnZhbElkCQl0aW1lciA9IChYdEludGVydmFsSWQpMDsKKyAgICBzdGF0aWMgaW50CQkJdGltZWRfb3V0ID0gVFJVRTsKIAogICAgIGV2ZW50ID0gKFhCdXR0b25QcmVzc2VkRXZlbnQgKillOwogCisgICAgaWYgKGV2ZW50LT5idXR0b24gPT0gQnV0dG9uMSkKKyAgICB7CisJaWYgKHRhYmxpbmVfc2Nyb2xsZXJfY2xpY2tlZCgiTWFqb3JUYWJTY3JvbGxlck5leHQiLCBldmVudCkKKwkgICAgfHwgdGFibGluZV9zY3JvbGxlcl9jbGlja2VkKCJNYWpvclRhYlNjcm9sbGVyUHJldmlvdXMiLCBldmVudCkpCisJICAgIHJldHVybjsKKworCWlmICghdGltZWRfb3V0KQorCXsKKwkgICAgWHRSZW1vdmVUaW1lT3V0KHRpbWVyKTsKKwkgICAgdGltZWRfb3V0ID0gVFJVRTsKKworCSAgICAvKgorCSAgICAgKiBEb3VibGUgY2xpY2sgb24gdGhlIHRhYmxpbmUgZ3V0dGVyLCBhZGQgYSBuZXcgdGFiCisJICAgICAqLworCSAgICBzZW5kX3RhYmxpbmVfbWVudV9ldmVudCgwLCBUQUJMSU5FX01FTlVfTkVXKTsKKwl9CisJZWxzZQorCXsKKwkgICAgLyoKKwkgICAgICogU2luZ2xlIGNsaWNrIG9uIHRoZSB0YWJsaW5lIGd1dHRlciwgc3RhcnQgYSB0aW1lciB0byBjaGVjaworCSAgICAgKiBmb3IgZG91YmxlIGNsaWNrcworCSAgICAgKi8KKwkgICAgdGltZXIgPSBYdEFwcEFkZFRpbWVPdXQoYXBwX2NvbnRleHQsIChsb25nX3UpcF9tb3VzZXQsCisJCQkJICAgIG1vdGlmX3RhYmxpbmVfdGltZXJfY2IsICZ0aW1lZF9vdXQpOworCSAgICB0aW1lZF9vdXQgPSBGQUxTRTsKKwl9CisJcmV0dXJuOworICAgIH0KKwogICAgIGlmIChldmVudC0+YnV0dG9uICE9IEJ1dHRvbjMpCiAJcmV0dXJuOwogCiAgICAgaWYgKGV2ZW50LT5zdWJ3aW5kb3cgIT0gTm9uZSkKICAgICB7CiAJdGFiX3cgPSBYdFdpbmRvd1RvV2lkZ2V0KFh0RGlzcGxheSh3KSwgZXZlbnQtPnN1YndpbmRvdyk7CisJLyogTElOVEVEOiBhdm9pZCB3YXJuaW5nOiBkdWJpb3VzIG9wZXJhdGlvbiBvbiBlbnVtICovCiAJaWYgKHRhYl93ICE9IChXaWRnZXQpMCAmJiBYbUlzUHVzaEJ1dHRvbih0YWJfdykpCiAJICAgIFh0VmFHZXRWYWx1ZXModGFiX3csIFhtTnBhZ2VOdW1iZXIsICZ0YWJfaWR4LCBOVUxMKTsKICAgICB9CkBAIC0zMTY5LDYgKzMyMzUsOSBAQAogCXsKIAkgICAgWHRNYW5hZ2VDaGlsZCh0YWJMaW5lKTsKIAkgICAgWHRVbm1hbmFnZUNoaWxkKFh0TmFtZVRvV2lkZ2V0KHRhYkxpbmUsICJQYWdlU2Nyb2xsZXIiKSk7CisJICAgIFh0VW5tYW5hZ2VDaGlsZChYdE5hbWVUb1dpZGdldCh0YWJMaW5lLCAiTWlub3JUYWJTY3JvbGxlck5leHQiKSk7CisJICAgIFh0VW5tYW5hZ2VDaGlsZChYdE5hbWVUb1dpZGdldCh0YWJMaW5lLAorCQkJCQkgICAiTWlub3JUYWJTY3JvbGxlclByZXZpb3VzIikpOwogI2lmZGVmIEZFQVRfTUVOVQogIyBpZmRlZiBGRUFUX1RPT0xCQVIKIAkgICAgaWYgKFh0SXNNYW5hZ2VkKFh0UGFyZW50KHRvb2xCYXIpKSkKQEAgLTMyMzcsNiArMzMwNiw4IEBACiAgICAgWG1Ob3RlYm9va1BhZ2VJbmZvCXBhZ2VfaW5mbzsKICAgICBYbU5vdGVib29rUGFnZVN0YXR1cyBwYWdlX3N0YXR1czsKICAgICBpbnQJCQlsYXN0X3BhZ2UsIHRhYl9jb3VudDsKKyAgICBYbVN0cmluZwkJbGFiZWxfc3RyOworICAgIGNoYXIJCSpsYWJlbF9jc3RyOwogCiAgICAgaWYgKHRhYkxpbmUgPT0gKFdpZGdldCkwKQogCXJldHVybjsKQEAgLTMyNjUsOSArMzMzNiwyNSBAQAogCSAgICB0YWIgPSBwYWdlX2luZm8ubWFqb3JfdGFiX3dpZGdldDsKIAogCVh0VmFTZXRWYWx1ZXModGFiLCBYbU5wYWdlTnVtYmVyLCBuciwgTlVMTCk7Ci0JZ2V0X3RhYmxpbmVfbGFiZWwodHApOwotCVh0VmFTZXRWYWx1ZXModGFiLCBYdFZhVHlwZWRBcmcsIFhtTmxhYmVsU3RyaW5nLCBYbVJTdHJpbmcsCi0JCSAgICAgIE5hbWVCdWZmLCBTVFJMRU4oTmFtZUJ1ZmYpICsgMSwgTlVMTCk7CisKKwkvKgorCSAqIENoYW5nZSB0aGUgbGFiZWwgdGV4dCBvbmx5IGlmIGl0IGlzIGRpZmZlcmVudAorCSAqLworCVh0VmFHZXRWYWx1ZXModGFiLCBYbU5sYWJlbFN0cmluZywgJmxhYmVsX3N0ciwgTlVMTCk7CisJaWYgKFhtU3RyaW5nR2V0THRvUihsYWJlbF9zdHIsIFhtU1RSSU5HX0RFRkFVTFRfQ0hBUlNFVCwgJmxhYmVsX2NzdHIpKQorCXsKKwkgICAgZ2V0X3RhYmxpbmVfbGFiZWwodHApOworCSAgICBpZiAoU1RSQ01QKGxhYmVsX2NzdHIsIE5hbWVCdWZmKSAhPSAwKSB7CisJCVh0VmFTZXRWYWx1ZXModGFiLCBYdFZhVHlwZWRBcmcsIFhtTmxhYmVsU3RyaW5nLCBYbVJTdHJpbmcsCisJCQkgICAgICBOYW1lQnVmZiwgU1RSTEVOKE5hbWVCdWZmKSArIDEsIE5VTEwpOworCQkvKgorCQkgKiBGb3JjZSBhIHJlc2l6ZSBvZiB0aGUgdGFiIGxhYmVsIGJ1dHRvbgorCQkgKi8KKwkJWHRVbm1hbmFnZUNoaWxkKHRhYik7CisJCVh0TWFuYWdlQ2hpbGQodGFiKTsKKwkgICAgfQorCSAgICBYdEZyZWUobGFiZWxfY3N0cik7CisJfQogICAgIH0KIAogICAgIHRhYl9jb3VudCA9IG5yIC0gMTsKZGlmZiAtLWdpdCBhL3NyYy9ndWlfdzMyLmMgYi9zcmMvZ3VpX3czMi5jCmluZGV4IDBlNmU4NTcuLjIxYjc1N2IgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfdzMyLmMKKysrIGIvc3JjL2d1aV93MzIuYwpAQCAtNzQwLDE3ICs3NDAsNyBAQAogCQlHZXRDdXJzb3JQb3MoKExQUE9JTlQpJnB0KTsKIAkJR2V0V2luZG93UmVjdChzX3RleHRBcmVhLCAmcmVjdCk7CiAJCWlmIChwdC55IDwgcmVjdC50b3ApCi0JCXsKLQkJICAgIGNoYXJfdQkgICAgc3RyaW5nWzNdOwotCi0JCSAgICBzdHJpbmdbMF0gPSBDU0k7Ci0JCSAgICBzdHJpbmdbMV0gPSBLU19UQUJNRU5VOwotCQkgICAgc3RyaW5nWzJdID0gS0VfRklMTEVSOwotCQkgICAgYWRkX3RvX2lucHV0X2J1ZihzdHJpbmcsIDMpOwotCQkgICAgc3RyaW5nWzBdID0gMDsKLQkJICAgIHN0cmluZ1sxXSA9IChjaGFyX3UpKGxvbmcpVEFCTElORV9NRU5VX05FVzsKLQkJICAgIGFkZF90b19pbnB1dF9idWZfY3NpKHN0cmluZywgMik7Ci0JCX0KKwkJICAgIHNlbmRfdGFibGluZV9tZW51X2V2ZW50KDAsIFRBQkxJTkVfTUVOVV9ORVcpOwogCSAgICB9CiAJICAgIHJldHVybiBNeVdpbmRvd1Byb2MoaHduZCwgdU1zZywgd1BhcmFtLCBsUGFyYW0pOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9ndWlfdzQ4LmMgYi9zcmMvZ3VpX3c0OC5jCmluZGV4IGI5NDBhMjcuLjc1OTJjN2YgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfdzQ4LmMKKysrIGIvc3JjL2d1aV93NDguYwpAQCAtMTEyMCw2ICsxMTIwLDcgQEAKICAgICBpZiAoc2hvd2luZ190YWJsaW5lKQogICAgIHsKIAlpbnQJdG9wID0gMDsKKwlSRUNUCXJlY3Q7CiAKICNpZmRlZiBGRUFUX1RPT0xCQVIKIAlpZiAodmltX3N0cmNocihwX2dvLCBHT19UT09MQkFSKSAhPSBOVUxMKQpAQCAtMjE5MSw3ICsyMTkyLDYgQEAKICAgICBNRU5VSVRFTUlORk8gICAgbWluZm87CiAgICAgbG9uZwkgICAgcnZhbDsKICAgICBQT0lOVAkgICAgcHQ7Ci0gICAgY2hhcl91CSAgICBzdHJpbmdbM107CiAKICAgICB0YWJfcG1lbnUgPSBDcmVhdGVQb3B1cE1lbnUoKTsKICAgICBpZiAodGFiX3BtZW51ID09IE5VTEwpCkBAIC0yMjM2LDEzICsyMjM2LDcgQEAKIAllbHNlCiAJICAgIGlkeCArPSAxOwogCi0Jc3RyaW5nWzBdID0gQ1NJOwotCXN0cmluZ1sxXSA9IEtTX1RBQk1FTlU7Ci0Jc3RyaW5nWzJdID0gS0VfRklMTEVSOwotCWFkZF90b19pbnB1dF9idWYoc3RyaW5nLCAzKTsKLQlzdHJpbmdbMF0gPSBpZHg7Ci0Jc3RyaW5nWzFdID0gKGNoYXJfdSkobG9uZylydmFsOwotCWFkZF90b19pbnB1dF9idWZfY3NpKHN0cmluZywgMik7CisJc2VuZF90YWJsaW5lX21lbnVfZXZlbnQoaWR4LCAoaW50KXJ2YWwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IGY4MDlhNzMuLjhlZDRmMzQgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTc3NDMsNyArNzc0Myw3IEBACiAJCSYmICFndWkuc3RhcnRpbmcKICNlbmRpZgogCSAgICkKLQkgICAgY29tbWFuZF9oZWlnaHQob2xkX3ZhbHVlKTsKKwkgICAgY29tbWFuZF9oZWlnaHQoKTsKICAgICB9CiAKICAgICAvKiB3aGVuICd1cGRhdGVjb3VudCcgY2hhbmdlcyBmcm9tIHplcm8gdG8gbm9uLXplcm8sIG9wZW4gc3dhcCBmaWxlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2d1aS5wcm8gYi9zcmMvcHJvdG8vZ3VpLnBybwppbmRleCBiOTI2ZWIwLi43MTA1YTZmIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZ3VpLnBybworKysgYi9zcmMvcHJvdG8vZ3VpLnBybwpAQCAtMzgsNiArMzgsNyBAQAogZXh0ZXJuIHZvaWQgZ3VpX3VwZGF0ZV90YWJsaW5lIF9fQVJHUygodm9pZCkpOwogZXh0ZXJuIHZvaWQgZ2V0X3RhYmxpbmVfbGFiZWwgX19BUkdTKCh0YWJwYWdlX1QgKnRwKSk7CiBleHRlcm4gaW50IHNlbmRfdGFibGluZV9ldmVudCBfX0FSR1MoKGludCBucikpOworZXh0ZXJuIHZvaWQgc2VuZF90YWJsaW5lX21lbnVfZXZlbnQgX19BUkdTKChpbnQgdGFiaWR4LCBpbnQgZXZlbnQpKTsKIGV4dGVybiB2b2lkIGd1aV9yZW1vdmVfc2Nyb2xsYmFycyBfX0FSR1MoKHZvaWQpKTsKIGV4dGVybiB2b2lkIGd1aV9jcmVhdGVfc2Nyb2xsYmFyIF9fQVJHUygoc2Nyb2xsYmFyX1QgKnNiLCBpbnQgdHlwZSwgd2luX1QgKndwKSk7CiBleHRlcm4gc2Nyb2xsYmFyX1QgKmd1aV9maW5kX3Njcm9sbGJhciBfX0FSR1MoKGxvbmcgaWRlbnQpKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by93aW5kb3cucHJvIGIvc3JjL3Byb3RvL3dpbmRvdy5wcm8KaW5kZXggMzYyZjAwYS4uZjBjYTc3YiAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL3dpbmRvdy5wcm8KKysrIGIvc3JjL3Byb3RvL3dpbmRvdy5wcm8KQEAgLTEsNTkgKzEsNTkgQEAKIC8qIHdpbmRvdy5jICovCi1leHRlcm4gdm9pZCBkb193aW5kb3cgX19BUkdTKChpbnQgbmNoYXIsIGxvbmcgUHJlbnVtLCBpbnQgeGNoYXIpKTsKLWV4dGVybiBpbnQgd2luX3NwbGl0IF9fQVJHUygoaW50IHNpemUsIGludCBmbGFncykpOwotZXh0ZXJuIGludCB3aW5fdmFsaWQgX19BUkdTKCh3aW5fVCAqd2luKSk7Ci1leHRlcm4gaW50IHdpbl9jb3VudCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgbWFrZV93aW5kb3dzIF9fQVJHUygoaW50IGNvdW50LCBpbnQgdmVydGljYWwpKTsKLWV4dGVybiB2b2lkIHdpbl9tb3ZlX2FmdGVyIF9fQVJHUygod2luX1QgKndpbjEsIHdpbl9UICp3aW4yKSk7Ci1leHRlcm4gdm9pZCB3aW5fZXF1YWwgX19BUkdTKCh3aW5fVCAqbmV4dF9jdXJ3aW4sIGludCBjdXJyZW50LCBpbnQgZGlyKSk7Ci1leHRlcm4gdm9pZCBjbG9zZV93aW5kb3dzIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGtlZXBfY3Vyd2luKSk7Ci1leHRlcm4gdm9pZCB3aW5fY2xvc2UgX19BUkdTKCh3aW5fVCAqd2luLCBpbnQgZnJlZV9idWYpKTsKLWV4dGVybiB2b2lkIHdpbl9jbG9zZV9vdGhlcnRhYiBfX0FSR1MoKHdpbl9UICp3aW4sIGludCBmcmVlX2J1ZiwgdGFicGFnZV9UICp0cCkpOwotZXh0ZXJuIHZvaWQgd2luX2ZyZWVfYWxsIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgY2xvc2Vfb3RoZXJzIF9fQVJHUygoaW50IG1lc3NhZ2UsIGludCBmb3JjZWl0KSk7Ci1leHRlcm4gdm9pZCBjdXJ3aW5faW5pdCBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgd2luX2FsbG9jX2ZpcnN0IF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd2luX2luaXRfc2l6ZSBfX0FSR1MoKHZvaWQpKTsKLWV4dGVybiBpbnQgd2luX25ld190YWJwYWdlIF9fQVJHUygoaW50IGFmdGVyKSk7Ci1leHRlcm4gaW50IG1heV9vcGVuX3RhYnBhZ2UgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gaW50IG1ha2VfdGFicGFnZXMgX19BUkdTKChpbnQgbWF4Y291bnQpKTsKLWV4dGVybiBpbnQgdmFsaWRfdGFicGFnZSBfX0FSR1MoKHRhYnBhZ2VfVCAqdHBjKSk7Ci1leHRlcm4gdGFicGFnZV9UICpmaW5kX3RhYnBhZ2UgX19BUkdTKChpbnQgbikpOwotZXh0ZXJuIGludCB0YWJwYWdlX2luZGV4IF9fQVJHUygodGFicGFnZV9UICpmdHApKTsKLWV4dGVybiB2b2lkIGdvdG9fdGFicGFnZSBfX0FSR1MoKGludCBuKSk7Ci1leHRlcm4gdm9pZCBnb3RvX3RhYnBhZ2VfdHAgX19BUkdTKCh0YWJwYWdlX1QgKnRwKSk7Ci1leHRlcm4gdm9pZCB0YWJwYWdlX21vdmUgX19BUkdTKChpbnQgbnIpKTsKLWV4dGVybiB2b2lkIHdpbl9nb3RvIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gd2luX1QgKndpbl9maW5kX25yIF9fQVJHUygoaW50IHdpbm5yKSk7Ci1leHRlcm4gdm9pZCB3aW5fZW50ZXIgX19BUkdTKCh3aW5fVCAqd3AsIGludCB1bmRvX3N5bmMpKTsKLWV4dGVybiB3aW5fVCAqYnVmX2p1bXBfb3Blbl93aW4gX19BUkdTKChidWZfVCAqYnVmKSk7Ci1leHRlcm4gaW50IHdpbl9hbGxvY19saW5lcyBfX0FSR1MoKHdpbl9UICp3cCkpOwotZXh0ZXJuIHZvaWQgd2luX2ZyZWVfbHNpemUgX19BUkdTKCh3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHNoZWxsX25ld19yb3dzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgc2hlbGxfbmV3X2NvbHVtbnMgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3aW5fc2l6ZV9zYXZlIF9fQVJHUygoZ2FycmF5X1QgKmdhcCkpOwotZXh0ZXJuIHZvaWQgd2luX3NpemVfcmVzdG9yZSBfX0FSR1MoKGdhcnJheV9UICpnYXApKTsKLWV4dGVybiBpbnQgd2luX2NvbXBfcG9zIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIHZvaWQgd2luX3NldGhlaWdodCBfX0FSR1MoKGludCBoZWlnaHQpKTsKLWV4dGVybiB2b2lkIHdpbl9zZXRoZWlnaHRfd2luIF9fQVJHUygoaW50IGhlaWdodCwgd2luX1QgKndpbikpOwotZXh0ZXJuIHZvaWQgd2luX3NldHdpZHRoIF9fQVJHUygoaW50IHdpZHRoKSk7Ci1leHRlcm4gdm9pZCB3aW5fc2V0d2lkdGhfd2luIF9fQVJHUygoaW50IHdpZHRoLCB3aW5fVCAqd3ApKTsKLWV4dGVybiB2b2lkIHdpbl9zZXRtaW5oZWlnaHQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCB3aW5fZHJhZ19zdGF0dXNfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Ci1leHRlcm4gdm9pZCB3aW5fZHJhZ192c2VwX2xpbmUgX19BUkdTKCh3aW5fVCAqZHJhZ3dpbiwgaW50IG9mZnNldCkpOwotZXh0ZXJuIHZvaWQgd2luX2NvbXBfc2Nyb2xsIF9fQVJHUygod2luX1QgKndwKSk7Ci1leHRlcm4gdm9pZCBjb21tYW5kX2hlaWdodCBfX0FSR1MoKGxvbmcgb2xkX3BfY2gpKTsKLWV4dGVybiB2b2lkIGxhc3Rfc3RhdHVzIF9fQVJHUygoaW50IG1vcmV3aW4pKTsKLWV4dGVybiBpbnQgdGFibGluZV9oZWlnaHQgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gY2hhcl91ICpncmFiX2ZpbGVfbmFtZSBfX0FSR1MoKGxvbmcgY291bnQsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKLWV4dGVybiBjaGFyX3UgKmZpbGVfbmFtZV9hdF9jdXJzb3IgX19BUkdTKChpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgbGluZW5yX1QgKmZpbGVfbG51bSkpOwotZXh0ZXJuIGNoYXJfdSAqZmlsZV9uYW1lX2luX2xpbmUgX19BUkdTKChjaGFyX3UgKmxpbmUsIGludCBjb2wsIGludCBvcHRpb25zLCBsb25nIGNvdW50LCBjaGFyX3UgKnJlbF9mbmFtZSwgbGluZW5yX1QgKmZpbGVfbG51bSkpOwotZXh0ZXJuIGNoYXJfdSAqZmluZF9maWxlX25hbWVfaW5fcGF0aCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUpKTsKLWV4dGVybiBpbnQgcGF0aF93aXRoX3VybCBfX0FSR1MoKGNoYXJfdSAqZm5hbWUpKTsKLWV4dGVybiBpbnQgdmltX2lzQWJzTmFtZSBfX0FSR1MoKGNoYXJfdSAqbmFtZSkpOwotZXh0ZXJuIGludCB2aW1fRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7Ci1leHRlcm4gaW50IG1pbl9yb3dzIF9fQVJHUygodm9pZCkpOwotZXh0ZXJuIGludCBvbmx5X29uZV93aW5kb3cgX19BUkdTKCh2b2lkKSk7Ci1leHRlcm4gdm9pZCBjaGVja19sbnVtcyBfX0FSR1MoKGludCBkb19jdXJ3aW4pKTsKLWV4dGVybiBpbnQgd2luX2hhc3ZlcnRzcGxpdCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgZG9fd2luZG93IF9fQVJHUygoaW50IG5jaGFyLCBsb25nIFByZW51bSwgaW50IHhjaGFyKSk7CitpbnQgd2luX3NwbGl0IF9fQVJHUygoaW50IHNpemUsIGludCBmbGFncykpOworaW50IHdpbl92YWxpZCBfX0FSR1MoKHdpbl9UICp3aW4pKTsKK2ludCB3aW5fY291bnQgX19BUkdTKCh2b2lkKSk7CitpbnQgbWFrZV93aW5kb3dzIF9fQVJHUygoaW50IGNvdW50LCBpbnQgdmVydGljYWwpKTsKK3ZvaWQgd2luX21vdmVfYWZ0ZXIgX19BUkdTKCh3aW5fVCAqd2luMSwgd2luX1QgKndpbjIpKTsKK3ZvaWQgd2luX2VxdWFsIF9fQVJHUygod2luX1QgKm5leHRfY3Vyd2luLCBpbnQgY3VycmVudCwgaW50IGRpcikpOwordm9pZCBjbG9zZV93aW5kb3dzIF9fQVJHUygoYnVmX1QgKmJ1ZiwgaW50IGtlZXBfY3Vyd2luKSk7Cit2b2lkIHdpbl9jbG9zZSBfX0FSR1MoKHdpbl9UICp3aW4sIGludCBmcmVlX2J1ZikpOwordm9pZCB3aW5fY2xvc2Vfb3RoZXJ0YWIgX19BUkdTKCh3aW5fVCAqd2luLCBpbnQgZnJlZV9idWYsIHRhYnBhZ2VfVCAqdHApKTsKK3ZvaWQgd2luX2ZyZWVfYWxsIF9fQVJHUygodm9pZCkpOwordm9pZCBjbG9zZV9vdGhlcnMgX19BUkdTKChpbnQgbWVzc2FnZSwgaW50IGZvcmNlaXQpKTsKK3ZvaWQgY3Vyd2luX2luaXQgX19BUkdTKCh2b2lkKSk7CitpbnQgd2luX2FsbG9jX2ZpcnN0IF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5faW5pdF9zaXplIF9fQVJHUygodm9pZCkpOworaW50IHdpbl9uZXdfdGFicGFnZSBfX0FSR1MoKGludCBhZnRlcikpOworaW50IG1heV9vcGVuX3RhYnBhZ2UgX19BUkdTKCh2b2lkKSk7CitpbnQgbWFrZV90YWJwYWdlcyBfX0FSR1MoKGludCBtYXhjb3VudCkpOworaW50IHZhbGlkX3RhYnBhZ2UgX19BUkdTKCh0YWJwYWdlX1QgKnRwYykpOwordGFicGFnZV9UICpmaW5kX3RhYnBhZ2UgX19BUkdTKChpbnQgbikpOworaW50IHRhYnBhZ2VfaW5kZXggX19BUkdTKCh0YWJwYWdlX1QgKmZ0cCkpOwordm9pZCBnb3RvX3RhYnBhZ2UgX19BUkdTKChpbnQgbikpOwordm9pZCBnb3RvX3RhYnBhZ2VfdHAgX19BUkdTKCh0YWJwYWdlX1QgKnRwKSk7Cit2b2lkIHRhYnBhZ2VfbW92ZSBfX0FSR1MoKGludCBucikpOwordm9pZCB3aW5fZ290byBfX0FSR1MoKHdpbl9UICp3cCkpOword2luX1QgKndpbl9maW5kX25yIF9fQVJHUygoaW50IHdpbm5yKSk7Cit2b2lkIHdpbl9lbnRlciBfX0FSR1MoKHdpbl9UICp3cCwgaW50IHVuZG9fc3luYykpOword2luX1QgKmJ1Zl9qdW1wX29wZW5fd2luIF9fQVJHUygoYnVmX1QgKmJ1ZikpOworaW50IHdpbl9hbGxvY19saW5lcyBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCB3aW5fZnJlZV9sc2l6ZSBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCBzaGVsbF9uZXdfcm93cyBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgc2hlbGxfbmV3X2NvbHVtbnMgX19BUkdTKCh2b2lkKSk7Cit2b2lkIHdpbl9zaXplX3NhdmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7Cit2b2lkIHdpbl9zaXplX3Jlc3RvcmUgX19BUkdTKChnYXJyYXlfVCAqZ2FwKSk7CitpbnQgd2luX2NvbXBfcG9zIF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5fc2V0aGVpZ2h0IF9fQVJHUygoaW50IGhlaWdodCkpOwordm9pZCB3aW5fc2V0aGVpZ2h0X3dpbiBfX0FSR1MoKGludCBoZWlnaHQsIHdpbl9UICp3aW4pKTsKK3ZvaWQgd2luX3NldHdpZHRoIF9fQVJHUygoaW50IHdpZHRoKSk7Cit2b2lkIHdpbl9zZXR3aWR0aF93aW4gX19BUkdTKChpbnQgd2lkdGgsIHdpbl9UICp3cCkpOwordm9pZCB3aW5fc2V0bWluaGVpZ2h0IF9fQVJHUygodm9pZCkpOwordm9pZCB3aW5fZHJhZ19zdGF0dXNfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Cit2b2lkIHdpbl9kcmFnX3ZzZXBfbGluZSBfX0FSR1MoKHdpbl9UICpkcmFnd2luLCBpbnQgb2Zmc2V0KSk7Cit2b2lkIHdpbl9jb21wX3Njcm9sbCBfX0FSR1MoKHdpbl9UICp3cCkpOwordm9pZCBjb21tYW5kX2hlaWdodCBfX0FSR1MoKHZvaWQpKTsKK3ZvaWQgbGFzdF9zdGF0dXMgX19BUkdTKChpbnQgbW9yZXdpbikpOworaW50IHRhYmxpbmVfaGVpZ2h0IF9fQVJHUygodm9pZCkpOworY2hhcl91ICpncmFiX2ZpbGVfbmFtZSBfX0FSR1MoKGxvbmcgY291bnQsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKK2NoYXJfdSAqZmlsZV9uYW1lX2F0X2N1cnNvciBfX0FSR1MoKGludCBvcHRpb25zLCBsb25nIGNvdW50LCBsaW5lbnJfVCAqZmlsZV9sbnVtKSk7CitjaGFyX3UgKmZpbGVfbmFtZV9pbl9saW5lIF9fQVJHUygoY2hhcl91ICpsaW5lLCBpbnQgY29sLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUsIGxpbmVucl9UICpmaWxlX2xudW0pKTsKK2NoYXJfdSAqZmluZF9maWxlX25hbWVfaW5fcGF0aCBfX0FSR1MoKGNoYXJfdSAqcHRyLCBpbnQgbGVuLCBpbnQgb3B0aW9ucywgbG9uZyBjb3VudCwgY2hhcl91ICpyZWxfZm5hbWUpKTsKK2ludCBwYXRoX3dpdGhfdXJsIF9fQVJHUygoY2hhcl91ICpmbmFtZSkpOworaW50IHZpbV9pc0Fic05hbWUgX19BUkdTKChjaGFyX3UgKm5hbWUpKTsKK2ludCB2aW1fRnVsbE5hbWUgX19BUkdTKChjaGFyX3UgKmZuYW1lLCBjaGFyX3UgKmJ1ZiwgaW50IGxlbiwgaW50IGZvcmNlKSk7CitpbnQgbWluX3Jvd3MgX19BUkdTKCh2b2lkKSk7CitpbnQgb25seV9vbmVfd2luZG93IF9fQVJHUygodm9pZCkpOwordm9pZCBjaGVja19sbnVtcyBfX0FSR1MoKGludCBkb19jdXJ3aW4pKTsKK2ludCB3aW5faGFzdmVydHNwbGl0IF9fQVJHUygodm9pZCkpOwogLyogdmltOiBzZXQgZnQ9YyA6ICovCmRpZmYgLS1naXQgYS9zcmMvc3RydWN0cy5oIGIvc3JjL3N0cnVjdHMuaAppbmRleCBjZTNiZjliLi42NzEwYjcyIDEwMDY0NAotLS0gYS9zcmMvc3RydWN0cy5oCisrKyBiL3NyYy9zdHJ1Y3RzLmgKQEAgLTE2MjUsNiArMTYyNSw4IEBACiAgICAgd2luX1QJICAgICp0cF9sYXN0d2luOyAgICAvKiBsYXN0IHdpbmRvdyBpbiB0aGlzIFRhYiBwYWdlICovCiAgICAgbG9uZwkgICAgdHBfb2xkX1Jvd3M7ICAgIC8qIFJvd3Mgd2hlbiBUYWIgcGFnZSB3YXMgbGVmdCAqLwogICAgIGxvbmcJICAgIHRwX29sZF9Db2x1bW5zOyAvKiBDb2x1bW5zIHdoZW4gVGFiIHBhZ2Ugd2FzIGxlZnQgKi8KKyAgICBsb25nCSAgICB0cF9jaF91c2VkOwkgICAgLyogdmFsdWUgb2YgJ2NtZGhlaWdodCcgd2hlbiBmcmFtZSBzaXplCisJCQkJICAgICAgIHdhcyBzZXQgKi8KICNpZmRlZiBGRUFUX0dVSQogICAgIGludAkJICAgIHRwX3ByZXZfd2hpY2hfc2Nyb2xsYmFyc1szXTsKIAkJCQkgICAgLyogcHJldmlvdXMgdmFsdWUgb2Ygd2hpY2hfc2Nyb2xsYmFycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uaCBiL3NyYy92ZXJzaW9uLmgKaW5kZXggOTkzZTc0Ny4uYTVjN2U4OCAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uaAorKysgYi9zcmMvdmVyc2lvbi5oCkBAIC0zNSw2ICszNSw2IEBACiAgKi8KICNkZWZpbmUgVklNX1ZFUlNJT05fTk9ET1QJInZpbTcwYyIKICNkZWZpbmUgVklNX1ZFUlNJT05fU0hPUlQJIjcuMGMiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX01FRElVTQkiNy4wYzEyIEJFVEEiCi0jZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGMxMiBCRVRBICgyMDA2IEFwciA3KSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBjMTIgQkVUQSAoMjAwNiBBcHIgNywgY29tcGlsZWQgIgorI2RlZmluZSBWSU1fVkVSU0lPTl9NRURJVU0JIjcuMGMxMyBCRVRBIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBjMTMgQkVUQSAoMjAwNiBBcHIgOCkiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkdfREFURQkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYzEzIEJFVEEgKDIwMDYgQXByIDgsIGNvbXBpbGVkICIKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuYyBiL3NyYy93aW5kb3cuYwppbmRleCAyNjAwM2YzLi41ZTk1NTNiIDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC04NSw4ICs4NSw2IEBACiAjZGVmaW5lIE5PV0lOCQkod2luX1QgKiktMQkvKiBub24tZXhpc2l0aW5nIHdpbmRvdyAqLwogCiAjaWZkZWYgRkVBVF9XSU5ET1dTCi1zdGF0aWMgbG9uZyBwX2NoX3VzZWQgPSAxTDsJCS8qIHZhbHVlIG9mICdjbWRoZWlnaHQnIHdoZW4gZnJhbWUKLQkJCQkJICAgc2l6ZSB3YXMgc2V0ICovCiAjIGRlZmluZSBST1dTX0FWQUlMIChSb3dzIC0gcF9jaCAtIHRhYmxpbmVfaGVpZ2h0KCkpCiAjZWxzZQogIyBkZWZpbmUgUk9XU19BVkFJTCAoUm93cyAtIHBfY2gpCkBAIC0zMDg3LDkgKzMwODUsNiBAQAogICAgIHRvcGZyYW1lLT5mcl93aWR0aCA9IENvbHVtbnM7CiAjZW5kaWYKICAgICB0b3BmcmFtZS0+ZnJfaGVpZ2h0ID0gUm93cyAtIHBfY2g7Ci0jaWZkZWYgRkVBVF9XSU5ET1dTCi0gICAgcF9jaF91c2VkID0gcF9jaDsKLSNlbmRpZgogICAgIHRvcGZyYW1lLT5mcl93aW4gPSBjdXJ3aW47CiAgICAgY3Vyd2luLT53X2ZyYW1lID0gdG9wZnJhbWU7CiAKQEAgLTMxMzcsNiArMzEzMiw3IEBACiAJLyogaW5pdCB0OiB2YXJpYWJsZXMgKi8KIAlpbml0X3Zhcl9kaWN0KCZ0cC0+dHBfdmFycywgJnRwLT50cF93aW52YXIpOwogI2VuZGlmCisJdHAtPnRwX2NoX3VzZWQgPSBwX2NoOwogICAgIH0KICAgICByZXR1cm4gdHA7CiB9CkBAIC0zNDE5LDcgKzM0MTUsOSBAQAogCiAgICAgLyogVGhlIHRhYnBhZ2UgbGluZSBtYXkgaGF2ZSBhcHBlYXJlZCBvciBkaXNhcHBlYXJlZCwgbWF5IG5lZWQgdG8gcmVzaXplCiAgICAgICogdGhlIGZyYW1lcyBmb3IgdGhhdC4gIFdoZW4gdGhlIFZpbSB3aW5kb3cgd2FzIHJlc2l6ZWQgbmVlZCB0byB1cGRhdGUKLSAgICAgKiBmcmFtZSBzaXplcyB0b28uICovCisgICAgICogZnJhbWUgc2l6ZXMgdG9vLiAgVXNlIHRoZSBzdG9yZWQgdmFsdWUgb2YgcF9jaCwgc28gdGhhdCBpdCBjYW4gYmUKKyAgICAgKiBkaWZmZXJlbnQgZm9yIGVhY2ggdGFiIHBhZ2UuICovCisgICAgcF9jaCA9IGN1cnRhYi0+dHBfY2hfdXNlZDsKICAgICBpZiAoY3VydGFiLT50cF9vbGRfUm93cyAhPSBSb3dzIHx8IChvbGRfb2ZmICE9IGZpcnN0d2luLT53X3dpbnJvdwogI2lmZGVmIEZFQVRfR1VJX1RBQkxJTkUKIAkJCSAgICAmJiAhZ3VpX3VzZV90YWJsaW5lKCkKQEAgLTQyMTUsNyArNDIxMyw3IEBACiAjZW5kaWYKICAgICBjb21wdXRlX2NtZHJvdygpOwogI2lmZGVmIEZFQVRfV0lORE9XUwotICAgIHBfY2hfdXNlZCA9IHBfY2g7CisgICAgY3VydGFiLT50cF9jaF91c2VkID0gcF9jaDsKICNlbmRpZgogCiAjaWYgMApAQCAtNDk2MSw2ICs0OTU5LDcgQEAKICAgICBwX2NoID0gUm93cyAtIGNtZGxpbmVfcm93OwogICAgIGlmIChwX2NoIDwgMSkKIAlwX2NoID0gMTsKKyAgICBjdXJ0YWItPnRwX2NoX3VzZWQgPSBwX2NoOwogICAgIHJlZHJhd19hbGxfbGF0ZXIoU09NRV9WQUxJRCk7CiAgICAgc2hvd21vZGUoKTsKIH0KQEAgLTUyNTcsMTkgKzUyNTYsMTcgQEAKICAqIGNvbW1hbmRfaGVpZ2h0OiBjYWxsZWQgd2hlbmV2ZXIgcF9jaCBoYXMgYmVlbiBjaGFuZ2VkCiAgKi8KICAgICB2b2lkCi1jb21tYW5kX2hlaWdodChvbGRfcF9jaCkKLSAgICBsb25nCW9sZF9wX2NoOworY29tbWFuZF9oZWlnaHQoKQogewogI2lmZGVmIEZFQVRfV0lORE9XUwogICAgIGludAkJaDsKICAgICBmcmFtZV9UCSpmcnA7CisgICAgaW50CQlvbGRfcF9jaCA9IGN1cnRhYi0+dHBfY2hfdXNlZDsKIAotICAgIC8qIFdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgdmFsdWUgdXNlIHRoZSB2YWx1ZSBvZiBwX2NoIHRoYXQgd2UgcmVtZW1iZXJlZC4KLSAgICAgKiBUaGlzIGlzIG5lZWRlZCBmb3Igd2hlbiB0aGUgR1VJIHN0YXJ0cyB1cCwgd2UgY2FuJ3QgYmUgc3VyZSBpbiB3aGF0Ci0gICAgICogb3JkZXIgdGhpbmdzIGhhcHBlbi4gKi8KLSAgICBpZiAob2xkX3BfY2ggPCAwKQotCW9sZF9wX2NoID0gcF9jaF91c2VkOwotICAgIHBfY2hfdXNlZCA9IHBfY2g7CisgICAgLyogVXNlIHRoZSB2YWx1ZSBvZiBwX2NoIHRoYXQgd2UgcmVtZW1iZXJlZC4gIFRoaXMgaXMgbmVlZGVkIGZvciB3aGVuIHRoZQorICAgICAqIEdVSSBzdGFydHMgdXAsIHdlIGNhbid0IGJlIHN1cmUgaW4gd2hhdCBvcmRlciB0aGluZ3MgaGFwcGVuLiAgQW5kIHdoZW4KKyAgICAgKiBwX2NoIHdhcyBjaGFuZ2VkIGluIGFub3RoZXIgdGFiIHBhZ2UuICovCisgICAgY3VydGFiLT50cF9jaF91c2VkID0gcF9jaDsKIAogICAgIC8qIEZpbmQgYm90dG9tIGZyYW1lIHdpdGggd2lkdGggb2Ygc2NyZWVuLiAqLwogICAgIGZycCA9IGxhc3R3aW4tPndfZnJhbWU7CkBAIC01MzI4LDggKzUzMjUsOCBAQAogICAgIGlmIChmcnAgIT0gbGFzdHdpbi0+d19mcmFtZSkKIAkodm9pZCl3aW5fY29tcF9wb3MoKTsKICNlbHNlCi0gICAgd2luX3NldGhlaWdodCgoaW50KShmaXJzdHdpbi0+d19oZWlnaHQgKyBvbGRfcF9jaCAtIHBfY2gpKTsKICAgICBjbWRsaW5lX3JvdyA9IFJvd3MgLSBwX2NoOworICAgIHdpbl9zZXRoZWlnaHQoY21kbGluZV9yb3cpOwogI2VuZGlmCiB9CiAK