RnJvbSBmb29AYmF6IFNhdCBNYXkgMjEgMDQ6Mzk6MzUgUE0gQ0VTVCAyMDIyCkZyb206IEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgpEYXRlOiBUaHUsIDE5IE1heSAyMDIyIDExOjQ1OjM2IC0wNzAwClN1YmplY3Q6IG1tYzogY29yZTogRGVmYXVsdCB0byBnZW5lcmljX2NtZDZfdGltZSBhcyB0aW1lb3V0IGluIF9fbW1jX3N3aXRjaCgpClRvOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCkNjOiAiVWxmIEhhbnNzb24iIDx1bGYuaGFuc3NvbkBsaW5hcm8ub3JnPiwgIkZsb3JpYW4gRmFpbmVsbGkiIDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4sICJBZHJpYW4gSHVudGVyIiA8YWRyaWFuLmh1bnRlckBpbnRlbC5jb20+LCAiR3JlZyBLcm9haC1IYXJ0bWFuIiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+LCAiQXZyaSBBbHRtYW4iIDxhdnJpLmFsdG1hbkB3ZGMuY29tPiwgIkJlYW4gSHVvIiA8YmVhbmh1b0BtaWNyb24uY29tPiwgIk5pc2hhZCBLYW1kYXIiIDxuaXNoYWRrYW1kYXJAZ21haWwuY29tPiwgIkNocmlzdGlhbiBM9mhsZSIgPENMb2VobGVAaHlwZXJzdG9uZS5jb20+LCBsaW51eC1tbWNAdmdlci5rZXJuZWwub3JnIChvcGVuIGxpc3Q6TVVMVElNRURJQSBDQVJEIChNTUMpLCBTRUNVUkUgRElHSVRBTCAoU0QpIEFORC4uLiksIGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcgKG9wZW4gbGlzdCksIGFsY29vcGVyeEBnbWFpbC5jb20sIGtkYXN1LmtkZXZAZ21haWwuY29tCk1lc3NhZ2UtSUQ6IDwyMDIyMDUxOTE4NDUzNi4zNzA1NDAtNS1mLmZhaW5lbGxpQGdtYWlsLmNvbT4KCkZyb206IFVsZiBIYW5zc29uIDx1bGYuaGFuc3NvbkBsaW5hcm8ub3JnPgoKY29tbWl0IDUzM2E2Y2ZlMDhmOTZhN2I1YzY1ZTA2ZDIwOTE2ZDU1MmMxMWIyNTYgdXBzdHJlYW0KCkFsbCBjYWxsZXJzIG9mIF9fbW1jX3N3aXRjaCgpIHNob3VsZCBub3cgYmUgc3BlY2lmeWluZyBhIHZhbGlkIHRpbWVvdXQgZm9yCnRoZSBDTUQ2IGNvbW1hbmQuIEhvd2V2ZXIsIGp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgcHJpbnQgYSB3YXJuaW5nIGFuZApkZWZhdWx0IHRvIHVzZSB0aGUgZ2VuZXJpY19jbWQ2X3RpbWUgaW4gY2FzZSB0aGUgcHJvdmlkZWQgdGltZW91dF9tcwphcmd1bWVudCBpcyB6ZXJvLgoKSW4gdGhpcyBjb250ZXh0LCBsZXQncyBhbHNvIHNpbXBsaWZ5IHNvbWUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBhbmQKY2xhcmlmeSBzb21lIHJlbGF0ZWQgY29tbWVudHMuCgpTaWduZWQtb2ZmLWJ5OiBVbGYgSGFuc3NvbiA8dWxmLmhhbnNzb25AbGluYXJvLm9yZz4KTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8yMDIwMDEyMjE0Mjc0Ny41NjkwLTQtdWxmLmhhbnNzb25AbGluYXJvLm9yZwpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYyB8ICAgMTYgKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCi0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jX29wcy5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jX29wcy5jCkBAIC00NTgsMTAgKzQ1OCw2IEBAIHN0YXRpYyBpbnQgbW1jX3BvbGxfZm9yX2J1c3koc3RydWN0IG1tY18KIAlib29sIGV4cGlyZWQgPSBmYWxzZTsKIAlib29sIGJ1c3kgPSBmYWxzZTsKIAotCS8qIFdlIGhhdmUgYW4gdW5zcGVjaWZpZWQgY21kIHRpbWVvdXQsIHVzZSB0aGUgZmFsbGJhY2sgdmFsdWUuICovCi0JaWYgKCF0aW1lb3V0X21zKQotCQl0aW1lb3V0X21zID0gTU1DX09QU19USU1FT1VUX01TOwotCiAJLyoKIAkgKiBJbiBjYXNlcyB3aGVuIG5vdCBhbGxvd2VkIHRvIHBvbGwgYnkgdXNpbmcgQ01EMTMgb3IgYmVjYXVzZSB3ZSBhcmVuJ3QKIAkgKiBjYXBhYmxlIG9mIHBvbGxpbmcgYnkgdXNpbmcgLT5jYXJkX2J1c3koKSwgdGhlbiByZWx5IG9uIHdhaXRpbmcgdGhlCkBAIC01MzQsNiArNTMwLDEyIEBAIGludCBfX21tY19zd2l0Y2goc3RydWN0IG1tY19jYXJkICpjYXJkLAogCiAJbW1jX3JldHVuZV9ob2xkKGhvc3QpOwogCisJaWYgKCF0aW1lb3V0X21zKSB7CisJCXByX3dhcm4oIiVzOiB1bnNwZWNpZmllZCB0aW1lb3V0IGZvciBDTUQ2IC0gdXNlIGdlbmVyaWNcbiIsCisJCQltbWNfaG9zdG5hbWUoaG9zdCkpOworCQl0aW1lb3V0X21zID0gY2FyZC0+ZXh0X2NzZC5nZW5lcmljX2NtZDZfdGltZTsKKwl9CisKIAkvKgogCSAqIElmIHRoZSBjbWQgdGltZW91dCBhbmQgdGhlIG1heF9idXN5X3RpbWVvdXQgb2YgdGhlIGhvc3QgYXJlIGJvdGgKIAkgKiBzcGVjaWZpZWQsIGxldCdzIHZhbGlkYXRlIHRoZW0uIEEgZmFpbHVyZSBtZWFucyB3ZSBuZWVkIHRvIHByZXZlbnQKQEAgLTU0Miw3ICs1NDQsNyBAQCBpbnQgX19tbWNfc3dpdGNoKHN0cnVjdCBtbWNfY2FyZCAqY2FyZCwKIAkgKiB3aGljaCBhbHNvIG1lYW5zIHRoZXkgYXJlIG9uIHRoZWlyIG93biB3aGVuIGl0IGNvbWVzIHRvIGRlYWwgd2l0aCB0aGUKIAkgKiBidXN5IHRpbWVvdXQuCiAJICovCi0JaWYgKCEoaG9zdC0+Y2FwcyAmIE1NQ19DQVBfTkVFRF9SU1BfQlVTWSkgJiYgdGltZW91dF9tcyAmJgorCWlmICghKGhvc3QtPmNhcHMgJiBNTUNfQ0FQX05FRURfUlNQX0JVU1kpICYmCiAJICAgIGhvc3QtPm1heF9idXN5X3RpbWVvdXQgJiYgKHRpbWVvdXRfbXMgPiBob3N0LT5tYXhfYnVzeV90aW1lb3V0KSkKIAkJdXNlX3IxYl9yZXNwID0gZmFsc2U7CiAKQEAgLTU1NCwxMCArNTU2LDYgQEAgaW50IF9fbW1jX3N3aXRjaChzdHJ1Y3QgbW1jX2NhcmQgKmNhcmQsCiAJY21kLmZsYWdzID0gTU1DX0NNRF9BQzsKIAlpZiAodXNlX3IxYl9yZXNwKSB7CiAJCWNtZC5mbGFncyB8PSBNTUNfUlNQX1NQSV9SMUIgfCBNTUNfUlNQX1IxQjsKLQkJLyoKLQkJICogQSBidXN5X3RpbWVvdXQgb2YgemVybyBtZWFucyB0aGUgaG9zdCBjYW4gZGVjaWRlIHRvIHVzZQotCQkgKiB3aGF0ZXZlciB2YWx1ZSBpdCBmaW5kcyBzdWl0YWJsZS4KLQkJICovCiAJCWNtZC5idXN5X3RpbWVvdXQgPSB0aW1lb3V0X21zOwogCX0gZWxzZSB7CiAJCWNtZC5mbGFncyB8PSBNTUNfUlNQX1NQSV9SMSB8IE1NQ19SU1BfUjE7Cg==