fam
[Top] [All Lists]

[fam] (Fwd) BOUNCE fam@xxxxxxxxxxx: Message too long (>40000 chars)

To: fam@xxxxxxxxxxx
Subject: [fam] (Fwd) BOUNCE fam@xxxxxxxxxxx: Message too long (>40000 chars)
From: "Rusty Ballinger" <rusty@xxxxxxxxxxxxxxxxxx>
Date: Thu, 21 Jun 2001 14:32:40 -0700
Reply-to: rusty@xxxxxxx
Sender: owner-fam@xxxxxxxxxxx
--- Forwarded mail from owner-fam@xxxxxxxxxxx

Date: Thu, 21 Jun 2001 09:20:22 -0700
From: owner-fam@xxxxxxxxxxx
To: fam-approval@xxxxxxxxxxx
Subject: BOUNCE fam@xxxxxxxxxxx:     Message too long (>40000 chars)

Date: Thu, 21 Jun 2001 12:20:15 -0400 (EDT)
From: Alex Larsson <alexl@xxxxxxxxxx>
X-X-Sender:  <alexl@xxxxxxxxxxxxxxxxxxxxxxxx>
To: <fam@xxxxxxxxxxx>
Subject: FAM and dnotify (fwd)
Message-ID: <Pine.LNX.4.33.0106211219220.13395-200000@xxxxxxxxxxxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: MULTIPART/Mixed; BOUNDARY="-1345348566-795333630-992877943=:6187"
Content-ID: <Pine.LNX.4.33.0106211219221.13395@xxxxxxxxxxxxxxxxxxxxxxxx>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@xxxxxxxxxxxxxxxxxxxxxxxxxxxx for more info.

---1345348566-795333630-992877943=:6187
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.33.0106211219222.13395@xxxxxxxxxxxxxxxxxxxxxxxx>

I sent this mail some time ago, but didn't get it back. Is the fam list
working?

/ Alex
---------- Forwarded message ----------
Date: Mon, 18 Jun 2001 11:25:43 -0400 (EDT)
From: Alex Larsson <alexl@xxxxxxxxxx>
To: fam@xxxxxxxxxxx
Cc: nautilus-list@xxxxxxxxxxxxxxx
Subject: FAM and dnotify

I spent a couple of hours this weekend patching up FAM to use the new
linux dnotify fcntl instead of imon, patch attached. Having a working FAM
would be a very good thing for the Nautilus file manager.

Is there still a maintainer for oss FAM? There hasn't been a release for a
very long time.

I'd appreciate if some people could take a look at it. It seems to
basically work, but due to the strange interfaces (FAM and dnotify uses
filenames, the imon interface uses dev:inode) I'm unable to convince
myself that there are no race conditions involving renaming files across
directories.

I'm also unsure about the security issues of having FAM installed. (I
worry especially about it's handling of groups.) Does anyone know if Irix
has had any security problems with FAM?

/ Alex



---1345348566-795333630-992877943=:6187
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="fam_dmon.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0106181125430.6187@xxxxxxxxxxxxxxxxxxxxxxxx>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="fam_dmon.patch"

ZGlmZiAtdXIgL3RtcC9mb28vZmFtLW9zcy0yLjYuNC9hY2NvbmZpZy5oIGZh
bS1vc3MtMi42LjQvYWNjb25maWcuaA0KLS0tIC90bXAvZm9vL2ZhbS1vc3Mt
Mi42LjQvYWNjb25maWcuaAlTYXQgTWF5IDIwIDA2OjQ2OjMxIDIwMDANCisr
KyBmYW0tb3NzLTIuNi40L2FjY29uZmlnLmgJU3VuIEp1biAxNyAxNjowMzo1
NCAyMDAxDQpAQCAtMTcsNiArMTcsOSBAQA0KIC8qICBEZWZpbmUgaWYgdGhl
IHN5c3RlbSBoYXMgaW1vbiBhbmQgSU1PTklPQ18gaW9jdGwgZmxhZ3MuICAq
Lw0KICN1bmRlZiBIQVZFX0lNT04NCiANCisvKiAgRGVmaW5lIGlmIHRoZSBz
eXN0ZW0gaGFzIHRoZSBkbm90aWZ5IGZjbnRsIGFuZCBpdCdzIGdvbm5hIGJl
IHVzZWQuICAqLw0KKyN1bmRlZiBVU0VfRE5PVElGWQ0KKw0KIC8qICBEZWZp
bmUgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHN0cnVjdCByZXZva2RpIGFuZCB0
aGUgSU1PTklPQ19SRVZPS0RJDQogKiogIGlvY3RsIGZsYWcuICAoSVJJWCA1
LjMgZG9lc24ndC4pDQogKi8NCmRpZmYgLXVyIC90bXAvZm9vL2ZhbS1vc3Mt
Mi42LjQvY29uZmlndXJlLmluIGZhbS1vc3MtMi42LjQvY29uZmlndXJlLmlu
DQotLS0gL3RtcC9mb28vZmFtLW9zcy0yLjYuNC9jb25maWd1cmUuaW4JU2F0
IE1heSAyMCAwNzoyMzoxNyAyMDAwDQorKysgZmFtLW9zcy0yLjYuNC9jb25m
aWd1cmUuaW4JU3VuIEp1biAxNyAxNzoxNToyMSAyMDAxDQpAQCAtMzksNiAr
MzksOSBAQA0KIGRubCAgUHV0IGNvbmZpZ3VyYXRpb24gI2RlZmluZXMgaW4g
Y29uZmlnLmguDQogQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkNCiANCitk
bmwgSW5pdGlhbGl6ZSBsaWJ0b29sDQorQU1fUFJPR19MSUJUT09MDQorDQog
ZG5sDQogZG5sICBXZSB3YW50IHRvIGluY2x1ZGUgb3VyIGhlYWRlciBpbiAk
KHRvcF9zcmNkaXIpL2luY2x1ZGUNCiBkbmwNCkBAIC03OSwxNCArODIsMTQg
QEANCiBkbmwgSSBkb24ndCBrbm93IHdoeSwgYnV0IGF1dG9tYWtlIHdhbnRz
IHRvIHVzZSAuL21raW5zdGFsbGRpcnMuDQogZG5sIEFDX1BBVEhfUFJPRyhN
S0lOU1RBTExESVJTLCBta2luc3RhbGxkaXJzKQ0KIEFDX1BST0dfTUFLRV9T
RVQNCisNCisNCiBkbmwgQUNfUFJPR19BV0sNCiBkbmwgQUNfUEFUSF9QUk9H
KExJQlRPT0wsIGxpYnRvb2wpDQotQU1fUFJPR19MSUJUT09MDQogZG5sICBh
dXRvY29uZi9hdXRvbWFrZSBleHBlY3RzIEdOVSB0YXIsIHNvIGZpbmQgaXQg
b24gSVJJWC4NCiBBQ19QQVRIX1BST0coVEFSLCB0YXIsIHRhciwgL3Vzci9m
cmVld2FyZS9iaW46JFBBVEgpDQogQUNfUEFUSF9QUk9HKExEQ09ORklHLCBs
ZGNvbmZpZykNCiANCi0NCiBkbmwNCiBkbmwgIENoZWNrcyBmb3IgaGVhZGVy
IGZpbGVzLg0KIGRubA0KQEAgLTk2LDYgKzk5LDIxIEBADQogZG5sIEFDX0NI
RUNLX0hFQURFUlMoZmNudGwuaCBsaW1pdHMuaCBzeXMvdGltZS5oIHN5c2xv
Zy5oIHVuaXN0ZC5oKQ0KIA0KIGRubA0KK2RubCAgVGVzdCBmb3IgdGhlIGxp
bnV4IGRub3RpZnkgZmNudGwNCitkbmwNCitBQ19NU0dfQ0hFQ0tJTkcoW2Zv
ciBkbm90aWZ5IGZjbnRsIHN1cHBvcnRdKQ0KK0FDX1RSWV9DT01QSUxFKFsN
CisjZGVmaW5lIF9HTlVfU09VUkNFICANCisjaW5jbHVkZSA8ZmNudGwuaD4N
CisjaW5jbHVkZSA8dW5pc3RkLmg+DQorXSwNCitbIGludCBmZCA9IDE7DQor
ICBmY250bCAoZmQsIEZfTk9USUZZLCAoRE5fTU9ESUZZfEROX0NSRUFURXxE
Tl9ERUxFVEV8RE5fUkVOQU1FfEROX0FUVFJJQil8RE5fTVVMVElTSE9UKTsN
CitdLCBoYXZlX2Rub3RpZnk9eWVzLCBoYXZlX2Rub3RpZnk9bm8pDQordXNl
X2Rub3RpZnk9ZmFsc2UNCitBQ19NU0dfUkVTVUxUKCRoYXZlX2Rub3RpZnkp
DQorDQorZG5sDQogZG5sICBTZWUgaWYgaW1vbiBpcyBhdmFpbGFibGU7IGlm
IHNvLCBpcyBpdCBJUklYIG9yIExpbnV4Pw0KIGRubA0KIGlmIHRlc3QgYHVu
YW1lYCA9ICdJUklYJyB8fCB0ZXN0IGB1bmFtZWAgPSAnSVJJWDY0JzsgdGhl
bg0KQEAgLTExOCwxMSArMTM2LDE3IEBADQogaWYgdGVzdCAiJGhhdmVfaW1v
biIgIT0gInllcyI7IHRoZW4NCiAgICAgaGF2ZV9pbW9uPW5vDQogICAgIEFD
X0RFRklORShIQVZFX0lNT04sIDApDQorICAgIGlmIHRlc3QgIiRoYXZlX2Ru
b3RpZnkiID0gInllcyI7IHRoZW4NCisgICAgICAgIEFDX0RFRklORShVU0Vf
RE5PVElGWSkNCisJdXNlX2Rub3RpZnk9dHJ1ZQ0KKyAgICBmaQ0KICAgICBJ
TU9OX0ZVTkNTPUlNb25Ob25lDQogZmkNCitBTV9DT05ESVRJT05BTChVU0Vf
RE5PVElGWSwgJHVzZV9kbm90aWZ5KQ0KIEFDX1NVQlNUKElNT05fRlVOQ1Mp
DQogZWNobyAiVXNpbmcgaW1vbiBzdXBwb3J0IG1vZHVsZSAkSU1PTl9GVU5D
UyINCiANCisNCiBBQ19DSEVDS19IRUFERVIoc3lzL3N0YXR2ZnMuaCwgW0FD
X0RFRklORShIQVZFX1NUQVRWRlMsIDEpIGhhdmVfc3RhdHZmcz0ieWVzIl0s
IFtBQ19ERUZJTkUoSEFWRV9TVEFUVkZTLCAwKSBoYXZlX3N0YXR2ZnM9Im5v
Il0pDQogQUNfQ0hFQ0tfSEVBREVSKHN5cy9zeXNzZ2kuaCwgIEFDX0RFRklO
RShIQVZFX1NZU1NHSSwgIDEpLCBBQ19ERUZJTkUoSEFWRV9TWVNTR0ksICAw
KSkNCiBBQ19DSEVDS19IRUFERVIoc3lzL2ZzL25mc19jbG50LmgsIEFDX0RF
RklORShIQVZFX1NZU19GU19ORlNfQ0xOVF9ILCAxKSwgQUNfREVGSU5FKEhB
VkVfU1lTX0ZTX05GU19DTE5UX0gsIDApKQ0KQEAgLTU2MCw3ICs1ODQsNyBA
QA0KIGRubCANCiBkbmwgIGZhbSBpcyBhIGdvb2QgZGVhbCBsZXNzIGludGVy
ZXN0aW5nIHdpdGhvdXQgaW1vbi4NCiBkbmwgDQotaWYgdGVzdCAiJGhhdmVf
aW1vbiIgIT0gJ3llcyc7IHRoZW4NCitpZiB0ZXN0ICIkaGF2ZV9pbW9uIiAh
PSAneWVzJyAtYSAiJGhhdmVfZG5vdGlmeSIgIT0gJ3llcyc7IHRoZW4NCiAg
ICAgY2F0IDw8IEVPRg0KIA0KICAgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpk
aWZmIC11ciAvdG1wL2Zvby9mYW0tb3NzLTIuNi40L2ZhbS9JTW9uLmggZmFt
LW9zcy0yLjYuNC9mYW0vSU1vbi5oDQotLS0gL3RtcC9mb28vZmFtLW9zcy0y
LjYuNC9mYW0vSU1vbi5oCVNhdCBNYXkgMjAgMDY6NDY6MzEgMjAwMA0KKysr
IGZhbS1vc3MtMi42LjQvZmFtL0lNb24uaAlTYXQgSnVuIDE2IDE5OjM2OjI3
IDIwMDENCkBAIC0yNCwxMCArMjQsNyBAQA0KICNkZWZpbmUgSU1vbl9pbmNs
dWRlZA0KIA0KICNpbmNsdWRlICJjb25maWcuaCINCi0jaW5jbHVkZSA8c3lz
L3N0YXQuaD4NCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQotDQotI2luY2x1
ZGUgIkJvb2xlYW4uaCINCisjaW5jbHVkZSAiTW9uaXRvci5oIg0KIA0KIHN0
cnVjdCBzdGF0Ow0KIA0KQEAgLTQxLDI1ICszOCwxOCBAQA0KIC8vDQogLy8g
IFRoZSB1c2VyIG9mIHRoZSBJTW9uIG9iamVjdCBpcyB0aGUgSW50ZXJlc3Qg
Y2xhc3MuDQogDQotY2xhc3MgSU1vbiB7DQorY2xhc3MgSU1vbiA6IHB1Ymxp
YyBNb25pdG9yIHsNCiANCiBwdWJsaWM6DQotDQotICAgIGVudW0gU3RhdHVz
IHsgT0sgPSAwLCBCQUQgPSAtMSB9Ow0KLSAgICBlbnVtIEV2ZW50IHsgRVhF
QywgRVhJVCwgQ0hBTkdFIH07DQotDQotICAgIHR5cGVkZWYgdm9pZCAoKkV2
ZW50SGFuZGxlcikoZGV2X3QsIGlub190LCBpbnQgZXZlbnQpOw0KLQ0KICAg
ICBJTW9uKEV2ZW50SGFuZGxlciBoKTsNCiAgICAgfklNb24oKTsNCiANCiAg
ICAgc3RhdGljIGJvb2wgaXNfYWN0aXZlKCk7DQogDQotICAgIFN0YXR1cyBl
eHByZXNzKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzdGF0ICpzdGF0X3Jl
dHVybik7DQotICAgIFN0YXR1cyByZXZva2UoY29uc3QgY2hhciAqbmFtZSwg
ZGV2X3QgZGV2LCBpbm9fdCBpbm8pOw0KKyAgICB2aXJ0dWFsIFN0YXR1cyBl
eHByZXNzKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzdGF0ICpzdGF0X3Jl
dHVybik7DQorICAgIHZpcnR1YWwgU3RhdHVzIHJldm9rZShjb25zdCBjaGFy
ICpuYW1lLCBkZXZfdCBkZXYsIGlub190IGlubyk7DQogDQogcHJpdmF0ZToN
Ci0NCiAgICAgLy8gIENsYXNzIFZhcmlhYmxlcw0KIA0KICAgICBzdGF0aWMg
aW50IGltb25mZDsNCmRpZmYgLXVyIC90bXAvZm9vL2ZhbS1vc3MtMi42LjQv
ZmFtL0ludGVyZXN0LmMrKyBmYW0tb3NzLTIuNi40L2ZhbS9JbnRlcmVzdC5j
KysNCi0tLSAvdG1wL2Zvby9mYW0tb3NzLTIuNi40L2ZhbS9JbnRlcmVzdC5j
KysJU2F0IE1heSAyMCAwNjo0NjozMSAyMDAwDQorKysgZmFtLW9zcy0yLjYu
NC9mYW0vSW50ZXJlc3QuYysrCVN1biBKdW4gMTcgMTY6MDI6MjQgMjAwMQ0K
QEAgLTQxLDEyICs0MSwyMSBAQA0KICNpbmNsdWRlICJFdmVudC5oIg0KICNp
bmNsdWRlICJGaWxlU3lzdGVtLmgiDQogI2luY2x1ZGUgIklNb24uaCINCisj
aW5jbHVkZSAiRE5vdGlmeS5oIg0KICNpbmNsdWRlICJMb2cuaCINCiAjaW5j
bHVkZSAiUG9sbHN0ZXIuaCINCiAjaW5jbHVkZSAidGltZXZhbC5oIg0KIA0K
IEludGVyZXN0ICpJbnRlcmVzdDo6aGFzaHRhYmxlW107DQotSU1vbiAgICAg
IEludGVyZXN0OjppbW9uKGltb25faGFuZGxlcik7DQorDQorI2lmZGVmIFVT
RV9ETk9USUZZIA0KK3N0YXRpYyBETm90aWZ5IGRub3RpZnkoSW50ZXJlc3Q6
Om1vbml0b3JfaGFuZGxlcik7DQorTW9uaXRvciAqIEludGVyZXN0Ojptb25p
dG9yID0gJmRub3RpZnk7DQorI2Vsc2UNCitzdGF0aWMgSU1vbiBpbW9uKElu
dGVyZXN0Ojptb25pdG9yX2hhbmRsZXIpOw0KK01vbml0b3IgKiBJbnRlcmVz
dDo6bW9uaXRvciA9ICZpbW9uOw0KKyNlbmRpZg0KKw0KIGJvb2wgICAgICBJ
bnRlcmVzdDo6eHRhYl92ZXJpZmljYXRpb24gPSB0cnVlOw0KIA0KIEludGVy
ZXN0OjpJbnRlcmVzdChjb25zdCBjaGFyICpuYW1lLCBGaWxlU3lzdGVtICpm
cywgaW5fYWRkciBob3N0LCBFeHBvcnRWZXJpZmljYXRpb24gZXYpDQpAQCAt
NTgsMTEgKzY3LDExIEBADQogICAgICAgbXlob3N0KGhvc3QpLA0KICAgICAg
IG15cGF0aF9leHBvcnRlZF90b19ob3N0KGV2ID09IE5PX1ZFUklGWV9FWFBP
UlRFRCkNCiB7DQotICAgIG1lbXNldCgmb2xkX3N0YXQsIDAsIHNpemVvZihv
bGRfc3RhdCkpOyANCi0gICAgSU1vbjo6U3RhdHVzIHMgPSBJTW9uOjpCQUQ7
DQotDQotICAgIHMgPSBpbW9uLmV4cHJlc3MobmFtZSwgJm9sZF9zdGF0KTsN
Ci0gICAgaWYgKHMgIT0gSU1vbjo6T0spDQorICAgIG1lbXNldCgmb2xkX3N0
YXQsIDAsIHNpemVvZihvbGRfc3RhdCkpOw0KKyAgICANCisgICAgTW9uaXRv
cjo6U3RhdHVzIHMgPSBNb25pdG9yOjpCQUQ7DQorICAgIHMgPSBtb25pdG9y
LT5leHByZXNzKG5hbWUsICZvbGRfc3RhdCk7DQorICAgIGlmIChzICE9IE1v
bml0b3I6Ok9LKQ0KICAgICB7ICAgaW50IHJjID0gbHN0YXQobmFtZSwgJm9s
ZF9zdGF0KTsNCiAJaWYgKHJjIDwgMCkNCiAJeyAgIExvZzo6aW5mbygiY2Fu
J3QgbHN0YXQgJXMiLCBuYW1lKTsNCkBAIC05NSw3ICsxMDQsNyBAQA0KICAg
ICB9DQogI2VuZGlmDQogDQotICAgIGlmIChleHBvcnRlZF90b19ob3N0KCkp
IGZzLT5sbF9tb25pdG9yKHRoaXMsIHMgPT0gSU1vbjo6T0spOw0KKyAgICBp
ZiAoZXhwb3J0ZWRfdG9faG9zdCgpKSBmcy0+bGxfbW9uaXRvcih0aGlzLCBz
ID09IE1vbml0b3I6Ok9LKTsNCiB9DQogDQogSW50ZXJlc3Q6On5JbnRlcmVz
dCgpDQpAQCAtMTIzLDcgKzEzMiw3IEBADQogCQlwcCA9ICZwLT5oYXNobGlu
azsJLy8gbW92ZSB0byBuZXh0IGVsZW1lbnQNCiAJICAgIH0NCiAJaWYgKCFm
b3VuZF9zYW1lKQ0KLQkgICAgKHZvaWQpIGltb24ucmV2b2tlKG5hbWUoKSwg
ZGV2LCBpbm8pOw0KKwkgICh2b2lkKSBtb25pdG9yLT5yZXZva2UobmFtZSgp
LCBkZXYsIGlubyk7DQogICAgIH0NCiB9DQogDQpAQCAtMTQ3LDcgKzE1Niw3
IEBADQogDQogCS8vIEV4cHJlc3MgaW50ZXJlc3QuDQogDQotCWltb24uZXhw
cmVzcyhuYW1lKCksIE5VTEwpOw0KKwltb25pdG9yLT5leHByZXNzKG5hbWUo
KSwgTlVMTCk7DQogICAgIH0NCiAgICAgZWxzZQ0KIAloYXNobGluayA9IE5V
TEw7DQpAQCAtMjIxLDIzICsyMzAsMjMgQEANCiB9DQogDQogdm9pZA0KLUlu
dGVyZXN0OjppbW9uX2hhbmRsZXIoZGV2X3QgZGV2aWNlLCBpbm9fdCBpbnVt
YmVyLCBpbnQgZXZlbnQpDQorSW50ZXJlc3Q6Om1vbml0b3JfaGFuZGxlcihk
ZXZfdCBkZXZpY2UsIGlub190IGludW1iZXIsIGludCBldmVudCkNCiB7DQog
ICAgIGFzc2VydChkZXZpY2UgfHwgaW51bWJlcik7DQogDQogICAgIGZvciAo
SW50ZXJlc3QgKnAgPSAqaGFzaGNoYWluKGRldmljZSwgaW51bWJlciksICpu
ZXh0ID0gcDsgcDsgcCA9IG5leHQpDQogICAgIHsJbmV4dCA9IHAtPmhhc2hs
aW5rOw0KIAlpZiAocC0+aW5vID09IGludW1iZXIgJiYgcC0+ZGV2ID09IGRl
dmljZSkNCi0JeyAgIGlmIChldmVudCA9PSBJTW9uOjpFWEVDKQ0KKwkgIHsg
ICBpZiAoZXZlbnQgPT0gTW9uaXRvcjo6RVhFQykNCiAJICAgIHsgICBwLT5j
dXJfZXhlY19zdGF0ZSA9IEVYRUNVVElORzsNCiAJCSh2b2lkKSBwLT5yZXBv
cnRfZXhlY19zdGF0ZSgpOw0KIAkgICAgfQ0KLQkgICAgZWxzZSBpZiAoZXZl
bnQgPT0gSU1vbjo6RVhJVCkNCisJICAgIGVsc2UgaWYgKGV2ZW50ID09IE1v
bml0b3I6OkVYSVQpDQogCSAgICB7ICAgcC0+Y3VyX2V4ZWNfc3RhdGUgPSBO
T1RfRVhFQ1VUSU5HOw0KIAkJKHZvaWQpIHAtPnJlcG9ydF9leGVjX3N0YXRl
KCk7DQogCSAgICB9DQogCSAgICBlbHNlDQotCSAgICB7ICAgYXNzZXJ0KGV2
ZW50ID09IElNb246OkNIQU5HRSk7DQorCSAgICB7ICAgYXNzZXJ0KGV2ZW50
ID09IE1vbml0b3I6OkNIQU5HRSk7DQogCQlwLT5zY2FuKCk7DQogCSAgICB9
DQogCX0NCmRpZmYgLXVyIC90bXAvZm9vL2ZhbS1vc3MtMi42LjQvZmFtL0lu
dGVyZXN0LmggZmFtLW9zcy0yLjYuNC9mYW0vSW50ZXJlc3QuaA0KLS0tIC90
bXAvZm9vL2ZhbS1vc3MtMi42LjQvZmFtL0ludGVyZXN0LmgJU2F0IE1heSAy
MCAwNjo0NjozMSAyMDAwDQorKysgZmFtLW9zcy0yLjYuNC9mYW0vSW50ZXJl
c3QuaAlTYXQgSnVuIDE2IDE5OjI2OjUxIDIwMDENCkBAIC0zMiw3ICszMiw3
IEBADQogDQogY2xhc3MgRXZlbnQ7DQogY2xhc3MgRmlsZVN5c3RlbTsNCi1j
bGFzcyBJTW9uOw0KK2NsYXNzIE1vbml0b3I7DQogc3RydWN0IHN0YXQ7DQog
DQogLy8gIEludGVyZXN0IC0tIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGZp
bGVzeXN0ZW0gZW50aXRpZXMgb2YgaW50ZXJlc3QuDQpAQCAtNzQsNyArNzQs
NyBAQA0KIA0KICAgICAvLyAgUHVibGljIENsYXNzIE1ldGhvZA0KIA0KLSAg
ICBzdGF0aWMgdm9pZCBpbW9uX2hhbmRsZXIoZGV2X3QsIGlub190LCBpbnQg
ZXZlbnQpOw0KKyAgICBzdGF0aWMgdm9pZCBtb25pdG9yX2hhbmRsZXIoZGV2
X3QsIGlub190LCBpbnQgZXZlbnQpOw0KIA0KICAgICBzdGF0aWMgdm9pZCBl
bmFibGVfeHRhYl92ZXJpZmljYXRpb24oYm9vbCBlbmFibGUpOw0KIA0KQEAg
LTEyMCw3ICsxMjAsNyBAQA0KIA0KICAgICAvLyAgQ2xhc3MgVmFyaWFibGVz
DQogDQotICAgIHN0YXRpYyBJTW9uIGltb247DQorICAgIHN0YXRpYyBNb25p
dG9yICptb25pdG9yOw0KICAgICBzdGF0aWMgSW50ZXJlc3QgKmhhc2h0YWJs
ZVtIQVNIU0laRV07DQogICAgIHN0YXRpYyBib29sIHh0YWJfdmVyaWZpY2F0
aW9uOw0KIA0KZGlmZiAtdXIgL3RtcC9mb28vZmFtLW9zcy0yLjYuNC9mYW0v
TWFrZWZpbGUuYW0gZmFtLW9zcy0yLjYuNC9mYW0vTWFrZWZpbGUuYW0NCi0t
LSAvdG1wL2Zvby9mYW0tb3NzLTIuNi40L2ZhbS9NYWtlZmlsZS5hbQlTYXQg
TWF5IDIwIDA2OjQ2OjMxIDIwMDANCisrKyBmYW0tb3NzLTIuNi40L2ZhbS9N
YWtlZmlsZS5hbQlTdW4gSnVuIDE3IDE2OjMyOjA0IDIwMDENCkBAIC0zLDYg
KzMsMTIgQEANCiBiaW5fUFJPR1JBTVMgPSBmYW0NCiBzeXNjb25mX0RBVEEg
PSBmYW0uY29uZg0KIA0KK2lmIFVTRV9ETk9USUZZDQorRE5PVElGWV9GSUxF
UyA9IEROb3RpZnkuYysrDQorZWxzZQ0KK0ROT1RJRllfRklMRVMgPQ0KK2Vu
ZGlmDQorDQogZmFtX1NPVVJDRVMgPSBcDQogICBBY3Rpdml0eS5jKysgXA0K
ICAgQWN0aXZpdHkuaCBcDQpAQCAtMjAsNiArMjYsNyBAQA0KICAgRGlyZWN0
b3J5LmggXA0KICAgRGlyZWN0b3J5U2Nhbm5lci5jKysgXA0KICAgRGlyZWN0
b3J5U2Nhbm5lci5oIFwNCisgIEROb3RpZnkuaCBcDQogICBFdmVudC5jKysg
XA0KICAgRXZlbnQuaCBcDQogICBGaWxlLmMrKyBcDQpAQCAtNDgsNiArNTUs
NyBAQA0KICAgTkZTRmlsZVN5c3RlbS5oIFwNCiAgIE5ldENvbm5lY3Rpb24u
YysrIFwNCiAgIE5ldENvbm5lY3Rpb24uaCBcDQorICBNb25pdG9yLmggXA0K
ICAgUG9sbHN0ZXIuYysrIFwNCiAgIFBvbGxzdGVyLmggXA0KICAgUmVxdWVz
dC5oIFwNCkBAIC03Miw5ICs4MCwxMCBAQA0KICAgbWFpbi5jKysgXA0KICAg
dGltZXZhbC5jKysgXA0KICAgdGltZXZhbC5oIFwNCi0gIEBJTU9OX0ZVTkNT
QC5jKysNCisgIEBJTU9OX0ZVTkNTQC5jKysgXA0KKyAgJChETk9USUZZX0ZJ
TEVTKQ0KIA0KLUVYVFJBX2ZhbV9TT1VSQ0VTID0gSU1vbklyaXguYysrIElN
b25MaW51eC5jKysgSU1vbk5vbmUuYysrDQorRVhUUkFfZmFtX1NPVVJDRVMg
PSBJTW9uSXJpeC5jKysgSU1vbkxpbnV4LmMrKyBJTW9uTm9uZS5jKysgRE5v
dGlmeS5jKysNCiANCiBmYW1fTERBREQgPSAtbHJwY3N2YyAkKHRvcF9zcmNk
aXIpL3N1cHBvcnQvbGlic3VwcG9ydC5hDQogDQpkaWZmIC11ciAvdG1wL2Zv
by9mYW0tb3NzLTIuNi40L2luY2x1ZGUvQlRyZWUuaCBmYW0tb3NzLTIuNi40
L2luY2x1ZGUvQlRyZWUuaA0KLS0tIC90bXAvZm9vL2ZhbS1vc3MtMi42LjQv
aW5jbHVkZS9CVHJlZS5oCVNhdCBNYXkgMjAgMDY6NDY6MzIgMjAwMA0KKysr
IGZhbS1vc3MtMi42LjQvaW5jbHVkZS9CVHJlZS5oCVNhdCBKdW4gMTYgMDI6
MDQ6NDYgMjAwMQ0KQEAgLTI3MSw3ICsyNzEsNyBAQA0KICAgICBuICs9IHRo
YXQtPm4gKyAxOw0KICAgICBsaW5rW25dID0gdGhhdC0+bGlua1t0aGF0LT5u
XTsNCiAgICAgdGhhdC0+biA9IDA7DQotICAgIHRoYXQtPmxpbmtbMF0gPSBO
VUxMOw0KKyAgICB0aGF0LT5saW5rWzBdID0gMDsNCiB9DQogDQogLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KQEAgLTI4MCw3ICsyODAs
NyBAQA0KIA0KIHRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBWPg0KIEJUcmVl
PEssIFY+OjpCVHJlZSgpDQotICAgIDogcm9vdChOVUxMKSwgbnBhaXJzKDAp
DQorICAgIDogcm9vdCgwKSwgbnBhaXJzKDApDQogew0KICAgICBhc3NlcnQo
IShmYW5vdXQgJSAyKSk7DQogfQ0KQEAgLTQwNyw3ICs0MDcsNyBAQA0KIEJU
cmVlPEtleSwgVmFsdWU+OjpDbG9zdXJlDQogQlRyZWU8S2V5LCBWYWx1ZT46
Omluc2VydChOb2RlICpwLCBjb25zdCBLZXkmIGtleSwgY29uc3QgVmFsdWUm
IHZhbHVlKQ0KIHsNCi0gICAgaWYgKCFwKSByZXR1cm4gQ2xvc3VyZShrZXks
IHZhbHVlLCBOVUxMKTsNCisgICAgaWYgKCFwKSByZXR1cm4gQ2xvc3VyZShr
ZXksIHZhbHVlLCAwKTsNCiAgICAgLy8gIElmIHlvdSdyZSBydW5uaW5nIFB1
cmlmeSBvbiBhIGNsaWVudCBsaW5raW5nIHdpdGggbGliZmFtLCBhbmQgaXQg
c2F5cw0KICAgICAvLyAgdGhhdCBsaW5lIGlzIGNhdXNpbmcgYSAzLWJ5dGUg
VU1SIGZvciBCVHJlZTxpbnQsIGJvb2w+OjppbnNlcnQoKSBpbg0KICAgICAv
LyAgRkFNTmV4dEV2ZW50KCkgKCJSZWFkaW5nIDggYnl0ZXMgZnJvbSAweC4u
LiBvbiB0aGUgc3RhY2sgKDMgYnl0ZXMgYXQNCkBAIC00NzUsNyArNDc1LDcg
QEANCiAgICAgY2FzZSBVTkRFUjoNCiAJaWYgKHJvb3QtPm4gPT0gMCkNCiAJ
eyAgIE5vZGUgKm5yID0gcm9vdC0+bGlua1swXTsNCi0JICAgIHJvb3QtPmxp
bmtbMF0gPSBOVUxMOwkvLyBkb24ndCBkZWxldGUgc3VidHJlZQ0KKwkgICAg
cm9vdC0+bGlua1swXSA9IDA7CS8vIGRvbid0IGRlbGV0ZSBzdWJ0cmVlDQog
CSAgICBkZWxldGUgcm9vdDsNCiAJICAgIHJvb3QgPSBucjsNCiAJfQ0KQEAg
LTUwNyw4ICs1MDcsOCBAQA0KICAgICBOb2RlICpjcCA9IHAtPmxpbmtbaV07
DQogICAgIGFzc2VydChjcCk7DQogICAgIA0KLSAgICBOb2RlICpycCA9IGkg
PCBwLT5uID8gcC0+bGlua1tpICsgMV0gOiBOVUxMOw0KLSAgICBOb2RlICps
cCA9IGkgPiAwICAgID8gcC0+bGlua1tpIC0gMV0gOiBOVUxMOw0KKyAgICBO
b2RlICpycCA9IGkgPCBwLT5uID8gcC0+bGlua1tpICsgMV0gOiAwOw0KKyAg
ICBOb2RlICpscCA9IGkgPiAwICAgID8gcC0+bGlua1tpIC0gMV0gOiAwOw0K
ICAgICBhc3NlcnQoIXJwIHx8IHJwLT5uID49IGZhbm91dCAvIDIpOw0KICAg
ICBhc3NlcnQoIWxwIHx8IGxwLT5uID49IGZhbm91dCAvIDIpOw0KIA0KZGlm
ZiAtdXIgL3RtcC9mb28vZmFtLW9zcy0yLjYuNC90ZXN0L3Rlc3QuYysrIGZh
bS1vc3MtMi42LjQvdGVzdC90ZXN0LmMrKw0KLS0tIC90bXAvZm9vL2ZhbS1v
c3MtMi42LjQvdGVzdC90ZXN0LmMrKwlTYXQgTWF5IDIwIDA2OjQ2OjMyIDIw
MDANCisrKyBmYW0tb3NzLTIuNi40L3Rlc3QvdGVzdC5jKysJU2F0IEp1biAx
NiAwMjoxMzowMCAyMDAxDQpAQCAtNSw2ICs1LDcgQEANCiAjaW5jbHVkZSA8
c2lnbmFsLmg+DQogI2luY2x1ZGUgPGVycm5vLmg+DQogI2luY2x1ZGUgPHN0
ZGFyZy5oPg0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCiAvLyNpbmNsdWRlIDxm
Y250bC5oPg0KICNpbmNsdWRlICJmYW0uaCINCiAvLyNpbmNsdWRlICJCb29s
ZWFuLmgiDQoNCi0tLSAvZGV2L251bGwJU2F0IE1hciAyNCAwNTozNzo0NCAy
MDAxDQorKysgZmFtLW9zcy0yLjYuNC9mYW0vTW9uaXRvci5oCVNhdCBKdW4g
MTYgMTk6MTk6MDYgMjAwMQ0KQEAgLTAsMCArMSw1NyBAQA0KKy8vICBDb3B5
cmlnaHQgKEMpIDIwMDEgUmVkIEhhdCwgSW5jLiAgQWxsIFJpZ2h0cyBSZXNl
cnZlZC4NCisvLyAgQ29weXJpZ2h0IChDKSAxOTk5IFNpbGljb24gR3JhcGhp
Y3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorLy8gIA0KKy8vICBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KKy8vICB1bmRlciB0aGUgdGVy
bXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhcw0KKy8vICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbi4NCisvLw0KKy8vICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwsIGJ1
dA0KKy8vICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorLy8gIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1cnRoZXIs
IGFueQ0KKy8vICBsaWNlbnNlIHByb3ZpZGVkIGhlcmVpbiwgd2hldGhlciBp
bXBsaWVkIG9yIG90aGVyd2lzZSwgaXMgbGltaXRlZCB0bw0KKy8vICB0aGlz
IHByb2dyYW0gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBleHByZXNzIHByb3Zp
c2lvbnMgb2YgdGhlIEdOVQ0KKy8vICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
LiAgUGF0ZW50IGxpY2Vuc2VzLCBpZiBhbnksIHByb3ZpZGVkIGhlcmVpbiBk
byBub3QNCisvLyAgYXBwbHkgdG8gY29tYmluYXRpb25zIG9mIHRoaXMgcHJv
Z3JhbSB3aXRoIG90aGVyIHByb2R1Y3Qgb3IgcHJvZ3JhbXMsIG9yDQorLy8g
IGFueSBvdGhlciBwcm9kdWN0IHdoYXRzb2V2ZXIuICBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgd2l0aG91dCBhbnkNCisvLyAgd2FycmFudHkgdGhh
dCB0aGUgcHJvZ3JhbSBpcyBkZWxpdmVyZWQgZnJlZSBvZiB0aGUgcmlnaHRm
dWwgY2xhaW0gb2YgYW55DQorLy8gIHRoaXJkIHBlcnNvbiBieSB3YXkgb2Yg
aW5mcmluZ2VtZW50IG9yIHRoZSBsaWtlLiAgU2VlIHRoZSBHTlUgR2VuZXJh
bA0KKy8vICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKy8v
DQorLy8gIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gIHdpdGgg
dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5DQorLy8gIFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4NCisNCisjaWZu
ZGVmIE1vbml0b3JfaW5jbHVkZWQNCisjZGVmaW5lIE1vbml0b3JfaW5jbHVk
ZWQNCisNCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUgPHN5cy9z
dGF0Lmg+DQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKw0KK3N0cnVjdCBz
dGF0Ow0KKw0KKy8vICBNb25pdG9yIGlzIGFuIGFic3RyYWN0IGJhc2VjbGFz
cyBmb3IgZGlmZmVyZW5kIGZpbGUgbW9uaXRvcmluZw0KKy8vICBzeXN0ZW1z
LiBUaGUgb3JpZ2luYWwgc3lzdGVtIHVzZWQgd2FzIElNb24sIGFuZCB0aGUg
TW9udG9yIEFQSQ0KKy8vICBpcyBoZWF2aWx5IGluZmx1ZW5jZWQgYnkgdGhh
dC4NCisvLyAgVGhlcmUgY2FuIG9ubHkgYmUgb25lIGluc3RhbnRpYXRpb24g
b2YgdGhlIE1vbml0b3Igb2JqZWN0Lg0KKy8vDQorLy8gIFRoZSB1c2VyIG9m
IHRoaXMgb2JqZWN0IHVzZXMgZXhwcmVzcygpIGFuZCByZXZva2UoKSB0bw0K
Ky8vICBleHByZXNzL3Jldm9rZSBpbnRlcmVzdCBpbiBhIGZpbGUgdG8gaW1v
bi4gIFRoZXJlIGlzIGFsc28NCisvLyAgYSBjYWxsYmFjaywgdGhlIEV2ZW50
SGFuZGxlci4gIFdoZW4gYW4gZXZlbnQgY29tZXMgaW4sDQorLy8gIHRoZSBF
dmVudEhhbmRsZXIgaXMgY2FsbGVkLg0KKy8vDQorLy8gIFRoZSBtYWluIGlt
cGxlbWVudGVycyBvZiB0aGUgTW9uaXRvciBjbGFzcyBpcyBJTW9uIGFuZCBE
Tm90aWZ5DQorDQorY2xhc3MgTW9uaXRvciB7DQorcHVibGljOg0KKw0KKyAg
ICBlbnVtIFN0YXR1cyB7IE9LID0gMCwgQkFEID0gLTEgfTsNCisgICAgZW51
bSBFdmVudCB7IEVYRUMsIEVYSVQsIENIQU5HRSB9Ow0KKw0KKyAgICB0eXBl
ZGVmIHZvaWQgKCpFdmVudEhhbmRsZXIpKGRldl90LCBpbm9fdCwgaW50IGV2
ZW50KTsNCisNCisgICAgdmlydHVhbCBTdGF0dXMgZXhwcmVzcyhjb25zdCBj
aGFyICpuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3RhdF9yZXR1cm4pID0gMDsNCisg
ICAgdmlydHVhbCBTdGF0dXMgcmV2b2tlKGNvbnN0IGNoYXIgKm5hbWUsIGRl
dl90IGRldiwgaW5vX3QgaW5vKSA9IDA7DQorfTsNCisNCisjZW5kaWYgLyog
IU1vbml0b3JfaW5jbHVkZWQgKi8NCi0tLSAvZGV2L251bGwJU2F0IE1hciAy
NCAwNTozNzo0NCAyMDAxDQorKysgZmFtLW9zcy0yLjYuNC9mYW0vRE5vdGlm
eS5oCVNhdCBKdW4gMTYgMjA6MjE6MTEgMjAwMQ0KQEAgLTAsMCArMSw5MiBA
QA0KKy8vICBDb3B5cmlnaHQgKEMpIDIwMDEgUmVkIEhhdCwgSW5jLiAgQWxs
IFJpZ2h0cyBSZXNlcnZlZC4NCisvLyAgQ29weXJpZ2h0IChDKSAxOTk5IFNp
bGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQor
Ly8NCisvLyAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCisvLyAgdW5k
ZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgYXMNCisvLyAgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24uDQorLy8NCisvLyAgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291bGQgYmUg
dXNlZnVsLCBidXQNCisvLyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKy8vICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBGdXJ0aGVyLCBhbnkNCisvLyAgbGljZW5zZSBwcm92aWRlZCBoZXJlaW4s
IHdoZXRoZXIgaW1wbGllZCBvciBvdGhlcndpc2UsIGlzIGxpbWl0ZWQgdG8N
CisvLyAgdGhpcyBwcm9ncmFtIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZXhw
cmVzcyBwcm92aXNpb25zIG9mIHRoZSBHTlUNCisvLyAgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZS4gIFBhdGVudCBsaWNlbnNlcywgaWYgYW55LCBwcm92aWRl
ZCBoZXJlaW4gZG8gbm90DQorLy8gIGFwcGx5IHRvIGNvbWJpbmF0aW9ucyBv
ZiB0aGlzIHByb2dyYW0gd2l0aCBvdGhlciBwcm9kdWN0IG9yIHByb2dyYW1z
LCBvcg0KKy8vICBhbnkgb3RoZXIgcHJvZHVjdCB3aGF0c29ldmVyLiAgVGhp
cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIHdpdGhvdXQgYW55DQorLy8gIHdh
cnJhbnR5IHRoYXQgdGhlIHByb2dyYW0gaXMgZGVsaXZlcmVkIGZyZWUgb2Yg
dGhlIHJpZ2h0ZnVsIGNsYWltIG9mIGFueQ0KKy8vICB0aGlyZCBwZXJzb24g
Ynkgd2F5IG9mIGluZnJpbmdlbWVudCBvciB0aGUgbGlrZS4gIFNlZSB0aGUg
R05VIEdlbmVyYWwNCisvLyAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4NCisvLw0KKy8vICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZw0K
Ky8vICB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OQ0KKy8vICBUZW1wbGUg
UGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiBNQSAwMjExMS0xMzA3LCBVU0Eu
DQorDQorI2lmbmRlZiBETm90aWZ5X2luY2x1ZGVkDQorI2RlZmluZSBETm90
aWZ5X2luY2x1ZGVkDQorDQorI2luY2x1ZGUgImNvbmZpZy5oIg0KKyNpbmNs
dWRlICJNb25pdG9yLmgiDQorI2luY2x1ZGUgPHNpZ25hbC5oPg0KKw0KKy8v
ICBETm90aWZ5IGlzIGFuIG9iamVjdCBlbmNhcHN1bGF0aW5nIHRoZSBkbm90
aWZ5IGxpbnV4IGZjbnRsLg0KKy8vICBJdCAiZW11bGF0ZXMiIHRoZSBJTW9u
IGludGVyZmFjZS4NCisvLyAgVGhlcmUgY2FuIG9ubHkgYmUgb25lIGluc3Rh
bnRpYXRpb24gb2YgdGhlIEROb3RpZnkgb2JqZWN0Lg0KKy8vDQorLy8gIFRo
ZSB1c2VyIG9mIHRoaXMgb2JqZWN0IHVzZXMgZXhwcmVzcygpIGFuZCByZXZv
a2UoKSB0bw0KKy8vICBleHByZXNzL3Jldm9rZSBpbnRlcmVzdCBpbiBhIGZp
bGUuICBUaGVyZSBpcyBhbHNvDQorLy8gIGEgY2FsbGJhY2ssIHRoZSBFdmVu
dEhhbmRsZXIuICBXaGVuIGFuIGRub3RpZnkgZXZlbnQgY29tZXMgaW4sDQor
Ly8gIHRoZSBFdmVudEhhbmRsZXIgaXMgY2FsbGVkLg0KKy8vDQorLy8gIFRo
ZSB1c2VyIG9mIHRoZSBETm90aWZ5IG9iamVjdCBpcyB0aGUgSW50ZXJlc3Qg
Y2xhc3MuDQorDQorY2xhc3MgRE5vdGlmeSA6IHB1YmxpYyBNb25pdG9yIHsN
CitwdWJsaWM6DQorICAgIEROb3RpZnkoRXZlbnRIYW5kbGVyIGgpOw0KKyAg
ICB+RE5vdGlmeSgpOw0KKw0KKyAgICBzdGF0aWMgYm9vbCBpc19hY3RpdmUo
KTsNCisNCisgICAgdmlydHVhbCBTdGF0dXMgZXhwcmVzcyhjb25zdCBjaGFy
ICpuYW1lLCBzdHJ1Y3Qgc3RhdCAqc3RhdF9yZXR1cm4pOw0KKyAgICB2aXJ0
dWFsIFN0YXR1cyByZXZva2UoY29uc3QgY2hhciAqbmFtZSwgZGV2X3QgZGV2
LCBpbm9fdCBpbm8pOw0KKw0KK3ByaXZhdGU6DQorICAgIHN0cnVjdCBGaWxl
V2F0Y2g7DQorICAgIHN0cnVjdCBEaXJXYXRjaDsNCisgIA0KKyAgICAvLyAg
Q2xhc3MgVmFyaWFibGVzDQorICAgIGVudW0geyBRVUVVRVNJWkUgPSAxMDI0
IH07DQorICAgIHN0YXRpYyBpbnQgcGlwZV93cml0ZV9mZDsNCisgICAgc3Rh
dGljIGludCBwaXBlX3JlYWRfZmQ7DQorICAgIHN0YXRpYyBpbnQgY2hhbmdl
X3F1ZXVlW1FVRVVFU0laRV07DQorICAgIHN0YXRpYyB2b2xhdGlsZSBpbnQg
cXVldWVfaGVhZDsgLy8gT25seSBtb2RpZmllZCBieSByZWFkIGhhbmRsZXIN
CisgICAgc3RhdGljIHZvbGF0aWxlIGludCBxdWV1ZV90YWlsOyAvLyBPbmx5
IG1vZGlmaWVkIGJ5IHNpZ25hbCBoYW5kbGVyDQorICAgIHN0YXRpYyBFdmVu
dEhhbmRsZXIgZWhhbmRsZXI7DQorICAgIHN0YXRpYyB2b2lkIHNpZ25hbF9o
YW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqc2ksIHZvaWQgKmRhdGEpOw0K
KyAgICBzdGF0aWMgdm9pZCByZWFkX2hhbmRsZXIoaW50IGZkLCB2b2lkICpj
bG9zdXJlKTsNCisNCisgICAgZW51bSB7IERJUl9IQVNIU0laRSA9IDI1NyB9
Ow0KKyAgICBzdGF0aWMgRGlyV2F0Y2ggKmRpcl9oYXNoW0RJUl9IQVNIU0la
RV07DQorICAgIGVudW0geyBGSUxFX0hBU0hTSVpFID0gMjU3IH07DQorICAg
IHN0YXRpYyBGaWxlV2F0Y2ggKmZpbGVfaGFzaFtGSUxFX0hBU0hTSVpFXTsN
CisNCisgICAgc3RhdGljIERpcldhdGNoICoqZGlyX2hhc2hjaGFpbihpbnQg
ZmQpDQorCQkJICB7IHJldHVybiAmZGlyX2hhc2hbKHVuc2lnbmVkKSAoZmQp
ICUgRElSX0hBU0hTSVpFXTsgfQ0KKyAgICBzdGF0aWMgRmlsZVdhdGNoICoq
ZmlsZV9oYXNoY2hhaW4oZGV2X3QgZCwgaW5vX3QgaSkNCisJCQkgIHsgcmV0
dXJuICZmaWxlX2hhc2hbKHVuc2lnbmVkKSAoZCtpKSAlIEZJTEVfSEFTSFNJ
WkVdOyB9DQorDQorICAgIHN0YXRpYyBEaXJXYXRjaCAqbG9va3VwX2Rpcndh
dGNoIChpbnQgZmQpOw0KKyAgICBzdGF0aWMgRGlyV2F0Y2ggKmxvb2t1cF9k
aXJ3YXRjaCAoZGV2X3QgZGlyX2RldiwgaW5vX3QgZGlyX2lubyk7DQorICAg
IHN0YXRpYyBGaWxlV2F0Y2ggKmxvb2t1cF9maWxld2F0Y2ggKGRldl90IGZp
bGVfZGV2LCBpbm9fdCBmaWxlX2lubyk7DQorICAgIHN0YXRpYyB2b2lkIGhh
c2hfZGlyd2F0Y2goRGlyV2F0Y2ggKncpOw0KKyAgICBzdGF0aWMgdm9pZCBo
YXNoX2ZpbGV3YXRjaChGaWxlV2F0Y2ggKncpOw0KKyAgICBzdGF0aWMgdm9p
ZCB1bmhhc2hfZGlyd2F0Y2goRGlyV2F0Y2ggKncpOw0KKyAgICBzdGF0aWMg
dm9pZCB1bmhhc2hfZmlsZXdhdGNoKEZpbGVXYXRjaCAqdyk7DQorICAgIHN0
YXRpYyBTdGF0dXMgd2F0Y2hfZGlyKGNvbnN0IGNoYXIgKm5vdGlmeV9kaXIs
IGRldl90IGZpbGVfZGV2LCBpbm9fdCBmaWxlX2lubyk7DQorDQorICAgIERO
b3RpZnkoY29uc3QgRE5vdGlmeSYpOwkJCS8vIERvIG5vdCBjb3B5DQorICAg
IEROb3RpZnkgJiBvcGVyYXRvciA9IChjb25zdCBETm90aWZ5Jik7CS8vICBv
ciBhc3NpZ24uDQorfTsNCisNCisjZW5kaWYgLyogIUlNb25faW5jbHVkZWQg
Ki8NCisNCisNCi0tLSAvZGV2L251bGwJU2F0IE1hciAyNCAwNTozNzo0NCAy
MDAxDQorKysgZmFtLW9zcy0yLjYuNC9mYW0vRE5vdGlmeS5jKysJU2F0IEp1
biAxNiAyMDoyMzo0MSAyMDAxDQpAQCAtMCwwICsxLDQ3NCBAQA0KKy8vICBD
b3B5cmlnaHQgKEMpIDIwMDEgUmVkIEhhdCwgSW5jLiAgQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4NCisvLyAgQ29weXJpZ2h0IChDKSAxOTk5IFNpbGljb24gR3Jh
cGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorLy8gIA0KKy8v
ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KKy8vICB1bmRlciB0aGUg
dGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcw0KKy8vICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbi4NCisvLw0KKy8vICBUaGlzIHByb2dyYW0gaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWws
IGJ1dA0KKy8vICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorLy8gIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1cnRo
ZXIsIGFueQ0KKy8vICBsaWNlbnNlIHByb3ZpZGVkIGhlcmVpbiwgd2hldGhl
ciBpbXBsaWVkIG9yIG90aGVyd2lzZSwgaXMgbGltaXRlZCB0bw0KKy8vICB0
aGlzIHByb2dyYW0gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBleHByZXNzIHBy
b3Zpc2lvbnMgb2YgdGhlIEdOVQ0KKy8vICBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlLiAgUGF0ZW50IGxpY2Vuc2VzLCBpZiBhbnksIHByb3ZpZGVkIGhlcmVp
biBkbyBub3QNCisvLyAgYXBwbHkgdG8gY29tYmluYXRpb25zIG9mIHRoaXMg
cHJvZ3JhbSB3aXRoIG90aGVyIHByb2R1Y3Qgb3IgcHJvZ3JhbXMsIG9yDQor
Ly8gIGFueSBvdGhlciBwcm9kdWN0IHdoYXRzb2V2ZXIuICBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgd2l0aG91dCBhbnkNCisvLyAgd2FycmFudHkg
dGhhdCB0aGUgcHJvZ3JhbSBpcyBkZWxpdmVyZWQgZnJlZSBvZiB0aGUgcmln
aHRmdWwgY2xhaW0gb2YgYW55DQorLy8gIHRoaXJkIHBlcnNvbiBieSB3YXkg
b2YgaW5mcmluZ2VtZW50IG9yIHRoZSBsaWtlLiAgU2VlIHRoZSBHTlUgR2Vu
ZXJhbA0KKy8vICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0K
Ky8vDQorLy8gIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQorLy8gIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5DQorLy8gIFRlbXBsZSBQbGFjZSAt
IFN1aXRlIDMzMCwgQm9zdG9uIE1BIDAyMTExLTEzMDcsIFVTQS4NCisNCisj
ZGVmaW5lIF9HTlVfU09VUkNFICANCisjaW5jbHVkZSA8ZmNudGwuaD4NCisN
CisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2luY2x1ZGUgPHNpZ25hbC5oPg0K
KyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlIDx1bmlzdGQuaD4NCisj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+DQorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
DQorI2luY2x1ZGUgPGxpYmdlbi5oPg0KKw0KKyNpbmNsdWRlICJETm90aWZ5
LmgiDQorDQorI2luY2x1ZGUgIkludGVyZXN0LmgiDQorI2luY2x1ZGUgIkxv
Zy5oIg0KKyNpbmNsdWRlICJTY2hlZHVsZXIuaCINCisjaW5jbHVkZSAiYWxs
b2MuaCINCisNCisNCitpbnQgRE5vdGlmeTo6cGlwZV93cml0ZV9mZCA9IC0y
Ow0KK2ludCBETm90aWZ5OjpwaXBlX3JlYWRfZmQgPSAtMjsNCitpbnQgRE5v
dGlmeTo6Y2hhbmdlX3F1ZXVlW1FVRVVFU0laRV07DQordm9sYXRpbGUgaW50
IEROb3RpZnk6OnF1ZXVlX2hlYWQgPSAwOyAvLyBPbmx5IG1vZGlmaWVkIGJ5
IHJlYWQgaGFuZGxlcg0KK3ZvbGF0aWxlIGludCBETm90aWZ5OjpxdWV1ZV90
YWlsID0gMDsgLy8gT25seSBtb2RpZmllZCBieSBzaWduYWwgaGFuZGxlcg0K
K0ROb3RpZnk6OkV2ZW50SGFuZGxlciBETm90aWZ5OjplaGFuZGxlcjsNCisN
CitETm90aWZ5OjpEaXJXYXRjaCAqRE5vdGlmeTo6ZGlyX2hhc2hbRElSX0hB
U0hTSVpFXTsNCitETm90aWZ5OjpGaWxlV2F0Y2ggKkROb3RpZnk6OmZpbGVf
aGFzaFtGSUxFX0hBU0hTSVpFXTsNCisNCitzdHJ1Y3QgRE5vdGlmeTo6Rmls
ZVdhdGNoDQorew0KKyAgRGlyV2F0Y2ggKmRpcl93YXRjaDsNCisgIGRldl90
IGZpbGVfZGV2Ow0KKyAgaW5vX3QgZmlsZV9pbm87DQorICBGaWxlV2F0Y2gg
Km5leHQ7DQorICBGaWxlV2F0Y2ggKmhhc2hfbGluazsNCit9Ow0KKw0KK3N0
cnVjdCBETm90aWZ5OjpEaXJXYXRjaA0KK3sNCisgIGludCBmZDsNCisgIGRl
dl90IGRpcl9kZXY7DQorICBpbm9fdCBkaXJfaW5vOw0KKyAgDQorICBEaXJX
YXRjaCAqaGFzaF9saW5rOw0KKyAgRmlsZVdhdGNoICp3YXRjaGVzOw0KK307
DQorDQorRE5vdGlmeTo6RE5vdGlmeShFdmVudEhhbmRsZXIgaCkNCit7DQor
ICAgIGFzc2VydChlaGFuZGxlciA9PSBOVUxMKTsNCisgICAgZWhhbmRsZXIg
PSBoOw0KK30NCisNCitETm90aWZ5Ojp+RE5vdGlmeSgpDQorew0KKyAgICBp
ZiAocGlwZV9yZWFkX2ZkID49IDApDQorICAgIHsNCisJLy8gIFRlbGwgdGhl
IHNjaGVkdWxlci4NCisNCisJKHZvaWQpIFNjaGVkdWxlcjo6cmVtb3ZlX3Jl
YWRfaGFuZGxlcihwaXBlX3JlYWRfZmQpOw0KKw0KKwkvLyAgQ2xvc2UgdGhl
IHBpcGUuDQorDQorCWlmIChjbG9zZShwaXBlX3JlYWRfZmQpIDwgMCkNCisJ
ICAgIExvZzo6cGVycm9yKCJjYW4ndCBwaXBlIHJlYWQgZW5kIik7DQorCWVs
c2UNCisJICAgIExvZzo6ZGVidWcoImNsb3NlZCBwaXBlIHJlYWQgZW5kIik7
DQorCQ0KKwlpZiAoY2xvc2UocGlwZV93cml0ZV9mZCkgPCAwKQ0KKwkgICAg
TG9nOjpwZXJyb3IoImNhbid0IHBpcGUgd3JpdGUgZW5kIik7DQorCWVsc2UN
CisJICAgIExvZzo6ZGVidWcoImNsb3NlZCBwaXBlIHdyaXRlIGVuZCIpOw0K
KwlwaXBlX3JlYWRfZmQgPSAtMTsNCisgICAgfQ0KKyAgICBlaGFuZGxlciA9
IE5VTEw7DQorfQ0KKw0KKw0KK3ZvaWQNCitETm90aWZ5OjpzaWduYWxfaGFu
ZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKnNpLCB2b2lkICpkYXRhKQ0KK3sN
CisgIGludCBsZWZ0Ow0KKyAgY2hhciBjOw0KKw0KKyAgaWYgKHF1ZXVlX2hl
YWQgPD0gcXVldWVfdGFpbCkNCisgICAgbGVmdCA9IChRVUVVRVNJWkUgKyBx
dWV1ZV9oZWFkKSAtIHF1ZXVlX3RhaWw7DQorICBlbHNlIA0KKyAgICBsZWZ0
ID0gcXVldWVfaGVhZCAtIHF1ZXVlX3RhaWw7DQorICANCisgIC8vIE11c3Qg
bGVhdmUgYXQgbGVhc3Qgb25lIGl0ZW0gdW51c2VkIHRvIHNlZSBkaWZmZXJl
bmNlDQorICAvLyBCZXR3ZWVlbiBlbXB0eSBhbmQgZnVsbA0KKyAgaWYgKGxl
ZnQgPD0gMSkNCisgICAgew0KKyAgICAgIC8vIFF1ZXVlIG92ZXJmbG93IQ0K
KyAgICAgIHJldHVybjsNCisgICAgfQ0KKyAgICANCisgIGNoYW5nZV9xdWV1
ZVtxdWV1ZV90YWlsXSA9IHNpLT5zaV9mZDsNCisgIHF1ZXVlX3RhaWwgPSAo
cXVldWVfdGFpbCArIDEpICUgUVVFVUVTSVpFOw0KKw0KKyAgLy8gVHJpZ2dl
ciB0aGUgcmVhZCBoYW5kbGVyDQorICB3cml0ZShwaXBlX3dyaXRlX2ZkLCAm
YywgMSk7DQorfQ0KKw0KK2Jvb2wNCitETm90aWZ5Ojppc19hY3RpdmUoKQ0K
K3sNCisgICAgaWYgKHBpcGVfcmVhZF9mZCA9PSAtMikNCisgICAgew0KKyAg
ICAgICAgaW50IGZpbGVkZXNbMl07DQorCWludCByZXM7DQorCQ0KKwlyZXMg
PSBwaXBlIChmaWxlZGVzKTsNCisJaWYgKHJlcyA+PSAwKQ0KKwl7ICAgTG9n
OjpkZWJ1Zygib3BlbmVkIHBpcGUiKTsNCisgICAJICAgIHBpcGVfcmVhZF9m
ZCA9IGZpbGVkZXNbMF07DQorICAgCSAgICBwaXBlX3dyaXRlX2ZkID0gZmls
ZWRlc1sxXTsNCisNCisJICAgIC8vIFNldHVwIHNpZ25hbCBoYW5kbGVyOg0K
KwkgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7DQorCSAgICANCisJICAgIGFj
dC5zYV9zaWdhY3Rpb24gPSBzaWduYWxfaGFuZGxlcjsNCisJICAgIHNpZ2Vt
cHR5c2V0KCZhY3Quc2FfbWFzayk7DQorCSAgICBhY3Quc2FfZmxhZ3MgPSBT
QV9TSUdJTkZPOw0KKwkgICAgc2lnYWN0aW9uIChTSUdSVE1JTiwgJmFjdCwg
TlVMTCk7DQorCSAgICANCisJICAgICh2b2lkKSBTY2hlZHVsZXI6Omluc3Rh
bGxfcmVhZF9oYW5kbGVyKHBpcGVfcmVhZF9mZCwgcmVhZF9oYW5kbGVyLCBO
VUxMKTsNCisJfQ0KKyAgICB9DQorICAgIHJldHVybiBwaXBlX3JlYWRfZmQg
Pj0gMDsNCit9DQorDQorRE5vdGlmeTo6RGlyV2F0Y2ggKg0KK0ROb3RpZnk6
Omxvb2t1cF9kaXJ3YXRjaCAoaW50IGZkKQ0KK3sNCisgIERpcldhdGNoICoq
cDsNCisgIERpcldhdGNoICp3Ow0KKw0KKyAgcCA9IGRpcl9oYXNoY2hhaW4g
KGZkKTsNCisNCisgIHdoaWxlICgqcCkNCisgICAgew0KKyAgICAgIHcgPSAq
cDsNCisNCisgICAgICBpZiAody0+ZmQgPT0gZmQpDQorCXJldHVybiB3Ow0K
Kw0KKyAgICAgIHAgPSAmdy0+aGFzaF9saW5rOw0KKyAgICB9DQorICANCisg
IHJldHVybiAqcDsNCit9DQorDQorLy8gVGhpcyBjb2x1ZCBiZSBtYWRlIGZh
c3RlciBieSB1c2luZyBhbm90aGVyIGhhc2ggdGFibGUuDQorLy8gQnV0IGl0
J3Mgbm90IHRoYXQgYmFkLCBzaW5jZSBpdCBpcyBvbmx5IHVzZWQgYnkgZXhw
cmVzcy9yZXZva2UNCitETm90aWZ5OjpEaXJXYXRjaCAqDQorRE5vdGlmeTo6
bG9va3VwX2RpcndhdGNoIChkZXZfdCBkaXJfZGV2LCBpbm9fdCBkaXJfaW5v
KQ0KK3sNCisgIERpcldhdGNoICpwOw0KKyAgaW50IGk7DQorDQorICBmb3Ig
KGk9MDtpPERJUl9IQVNIU0laRTtpKyspDQorICAgIHsNCisgICAgICBwID0g
ZGlyX2hhc2hbaV07DQorICAgICAgDQorICAgICAgd2hpbGUgKHApDQorCXsN
CisJICBpZiAocC0+ZGlyX2RldiA9PSBkaXJfZGV2ICYmIHAtPmRpcl9pbm8g
PT0gZGlyX2lubykNCisJICAgIHJldHVybiBwOw0KKwkgIA0KKwkgIHAgPSBw
LT5oYXNoX2xpbms7DQorCX0NCisgICAgfQ0KKyAgDQorICByZXR1cm4gTlVM
TDsNCit9DQorDQorRE5vdGlmeTo6RmlsZVdhdGNoICoNCitETm90aWZ5Ojps
b29rdXBfZmlsZXdhdGNoIChkZXZfdCBkZXYsIGlub190IGlubykNCit7DQor
ICBGaWxlV2F0Y2ggKipwOw0KKyAgRmlsZVdhdGNoICp3Ow0KKw0KKyAgcCA9
IGZpbGVfaGFzaGNoYWluIChkZXYsIGlubyk7DQorDQorICB3aGlsZSAoKnAp
DQorICAgIHsNCisgICAgICB3ID0gKnA7DQorDQorICAgICAgaWYgKHctPmZp
bGVfZGV2ID09IGRldiAmJiB3LT5maWxlX2lubyA9PSBpbm8pDQorCXJldHVy
biB3Ow0KKw0KKyAgICAgIHAgPSAmdy0+aGFzaF9saW5rOw0KKyAgICB9DQor
ICANCisgIHJldHVybiAqcDsNCit9DQorDQorLy8gTWFrZSBzdXJlIHcgaXMg
bm90IGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUgYmVmb3JlIGNhbGxpbmcN
CisvLyB0aGlzIGZ1bmN0aW9uLg0KK3ZvaWQNCitETm90aWZ5OjpoYXNoX2Rp
cndhdGNoKERpcldhdGNoICp3KQ0KK3sNCisgIERpcldhdGNoICoqcDsNCisg
IHAgPSBkaXJfaGFzaGNoYWluICh3LT5mZCk7DQorICB3LT5oYXNoX2xpbmsg
PSAqcDsNCisgICpwID0gdzsNCit9DQorDQorLy8gTWFrZSBzdXJlIHcgaXMg
bm90IGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUgYmVmb3JlIGNhbGxpbmcN
CisvLyB0aGlzIGZ1bmN0aW9uLg0KK3ZvaWQNCitETm90aWZ5OjpoYXNoX2Zp
bGV3YXRjaChGaWxlV2F0Y2ggKncpDQorew0KKyAgRmlsZVdhdGNoICoqcDsN
CisgIHAgPSBmaWxlX2hhc2hjaGFpbiAody0+ZmlsZV9kZXYsIHctPmZpbGVf
aW5vKTsNCisgIHctPmhhc2hfbGluayA9ICpwOw0KKyAgKnAgPSB3Ow0KK30N
CisNCit2b2lkDQorRE5vdGlmeTo6dW5oYXNoX2RpcndhdGNoKERpcldhdGNo
ICp3KQ0KK3sNCisgIERpcldhdGNoICoqcDsNCisgIA0KKyAgcCA9IGRpcl9o
YXNoY2hhaW4gKHctPmZkKTsNCisgIA0KKyAgd2hpbGUgKCpwKQ0KKyAgICB7
DQorICAgICAgaWYgKCpwID09IHcpDQorCXsNCisJICAqcCA9IHctPmhhc2hf
bGluazsNCisJICBicmVhazsNCisJfQ0KKyAgICAgIHAgPSAmKCpwKS0+aGFz
aF9saW5rOw0KKyAgICB9DQorICB3LT5oYXNoX2xpbmsgPSBOVUxMOw0KK30N
CisNCit2b2lkDQorRE5vdGlmeTo6dW5oYXNoX2ZpbGV3YXRjaChGaWxlV2F0
Y2ggKncpDQorew0KKyAgRmlsZVdhdGNoICoqcDsNCisgIA0KKyAgcCA9IGZp
bGVfaGFzaGNoYWluICh3LT5maWxlX2Rldiwgdy0+ZmlsZV9pbm8pOw0KKyAg
DQorICB3aGlsZSAoKnApDQorICAgIHsNCisgICAgICBpZiAoKnAgPT0gdykN
CisJew0KKwkgICpwID0gdy0+aGFzaF9saW5rOw0KKwkgIGJyZWFrOw0KKwl9
DQorICAgICAgcCA9ICYoKnApLT5oYXNoX2xpbms7DQorICAgIH0NCisgIHct
Pmhhc2hfbGluayA9IE5VTEw7DQorfQ0KKw0KK0ROb3RpZnk6OlN0YXR1cw0K
K0ROb3RpZnk6OndhdGNoX2Rpcihjb25zdCBjaGFyICpub3RpZnlfZGlyLCBk
ZXZfdCBmaWxlX2RldiwgaW5vX3QgZmlsZV9pbm8pDQorew0KKyAgc3RydWN0
IHN0YXQgc3RhdDsNCisgIGRldl90IGRpcl9kZXY7DQorICBpbm9fdCBkaXJf
aW5vOw0KKyAgRGlyV2F0Y2ggKmR3YXRjaDsNCisgIEZpbGVXYXRjaCAqKnA7
DQorICBGaWxlV2F0Y2ggKmZ3Ow0KKyAgICANCisgIGlmIChsc3RhdCAobm90
aWZ5X2RpciwgJnN0YXQpID09IC0xKQ0KKyAgICAgIHJldHVybiBCQUQ7DQor
ICANCisgIGR3YXRjaCA9IGxvb2t1cF9kaXJ3YXRjaChzdGF0LnN0X2Rldiwg
c3RhdC5zdF9pbm8pOw0KKyAgaWYgKCFkd2F0Y2gpDQorICAgIHsNCisgICAg
ICBMb2c6OmRlYnVnICgiTmV3IERpcldhdGNoIGZvciAlcyAoJXggJXgpXG4i
LA0KKwkJICBub3RpZnlfZGlyLCAoaW50KXN0YXQuc3RfZGV2LCAoaW50KXN0
YXQuc3RfaW5vKTsNCisgICAgICBkd2F0Y2ggPSBuZXcgRGlyV2F0Y2g7DQor
ICAgICAgZHdhdGNoLT53YXRjaGVzID0gTlVMTDsNCisgICAgICBkd2F0Y2gt
Pmhhc2hfbGluayA9IE5VTEw7DQorICAgICAgZHdhdGNoLT5kaXJfZGV2ID0g
c3RhdC5zdF9kZXY7DQorICAgICAgZHdhdGNoLT5kaXJfaW5vID0gc3RhdC5z
dF9pbm87DQorICAgICAgDQorICAgICAgZHdhdGNoLT5mZCA9IG9wZW4obm90
aWZ5X2RpciwgT19SRE9OTFkpOw0KKyAgICAgIGZjbnRsIChkd2F0Y2gtPmZk
LCBGX1NFVFNJRywgU0lHUlRNSU4pOw0KKyAgICAgIGZjbnRsIChkd2F0Y2gt
PmZkLCBGX05PVElGWSwNCisJICAgICAoRE5fTU9ESUZZfEROX0NSRUFURXxE
Tl9ERUxFVEV8RE5fUkVOQU1FfEROX0FUVFJJQikgfCBETl9NVUxUSVNIT1Qp
Ow0KKyAgICAgIGhhc2hfZGlyd2F0Y2ggKGR3YXRjaCk7DQorICAgIH0NCisN
CisgIGZvciAocD0mZHdhdGNoLT53YXRjaGVzOyAqcDsgcD0mKCpwKS0+bmV4
dCkNCisgICAgew0KKyAgICAgIGZ3ID0gKnA7DQorICAgICAgaWYgKGZ3LT5m
aWxlX2RldiA9PSBmaWxlX2RldiAmJiBmdy0+ZmlsZV9pbm8gPT0gZmlsZV9p
bm8pDQorCXJldHVybiBPSzsNCisgICAgfQ0KKyAgDQorICAvLyBObyBvbGQg
RmlsZVdhdGNoLCBuZWVkIHRvIGFkZCBvbmU6DQorICBMb2c6OmRlYnVnKCJO
ZXcgRmlsZVdhdGNoIGZvciAleCAleFxuIiwgKGludClmaWxlX2RldiwgKGlu
dClmaWxlX2lubyk7DQorICAqcCA9IG5ldyBGaWxlV2F0Y2g7DQorICBmdyA9
ICpwOw0KKyAgZnctPm5leHQgPSBOVUxMOw0KKyAgZnctPmZpbGVfZGV2ID0g
ZmlsZV9kZXY7DQorICBmdy0+ZmlsZV9pbm8gPSBmaWxlX2lubzsNCisgIGZ3
LT5kaXJfd2F0Y2ggPSBkd2F0Y2g7DQorICBoYXNoX2ZpbGV3YXRjaChmdyk7
DQorICByZXR1cm4gT0s7DQorfQ0KKw0KK2NoYXIgKg0KK2Rpcm5hbWVfZHVw
IChjb25zdCBjaGFyICpuYW1lKQ0KK3sNCisgIGNoYXIgKmNvcHkgPSBzdHJk
dXAobmFtZSk7DQorICBjaGFyICpyZXMgPSBkaXJuYW1lKGNvcHkpOw0KKyAg
cmVzID0gc3RyZHVwKHJlcyk7DQorICBmcmVlIChjb3B5KTsNCisgIHJldHVy
biByZXM7DQorfQ0KKw0KK0ROb3RpZnk6OlN0YXR1cw0KK0ROb3RpZnk6OmV4
cHJlc3MoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXQgKnN0YXR1cykN
Cit7DQorICAgIHN0cnVjdCBzdGF0IHN0YXQ7DQorICAgIGNoYXIgKm5vdGlm
eV9kaXI7DQorICAgIGludCByZXM7DQorICAgIFN0YXR1cyBzOw0KKyAgICBk
ZXZfdCBkZXY7DQorICAgIGlub190IGlubzsNCisNCisgICAgTG9nOjpkZWJ1
ZygiZXhwcmVzcygpIG5hbWU6ICVzXG4iLCBuYW1lKTsNCisNCisgICAgaWYg
KCFpc19hY3RpdmUoKSkNCisJcmV0dXJuIEJBRDsNCisNCisgICAgaWYgKDo6
bHN0YXQgKG5hbWUsICZzdGF0KSA9PSAtMSkNCisgICAgICByZXR1cm4gQkFE
Ow0KKw0KKyAgICBkZXYgPSBzdGF0LnN0X2RldjsNCisgICAgaW5vID0gc3Rh
dC5zdF9pbm87DQorICAgIA0KKyAgICBpZiAoKHN0YXQuc3RfbW9kZSAmIFNf
SUZNVCkgIT0gU19JRkRJUikNCisJbm90aWZ5X2RpciA9IGRpcm5hbWVfZHVw
IChuYW1lKTsNCisgICAgZWxzZQ0KKwlub3RpZnlfZGlyID0gKGNoYXIgKilu
YW1lOw0KKw0KKyAgICBzID0gd2F0Y2hfZGlyIChub3RpZnlfZGlyLCBkZXYs
IGlubyk7DQorICAgIGlmIChub3RpZnlfZGlyICE9IG5hbWUpDQorICAgICAg
ICBmcmVlIChub3RpZnlfZGlyKTsNCisgICAgaWYgKHMpDQorICAgICAgcmV0
dXJuIHM7DQorDQorICAgIC8vIENoZWNrIGZvciBhIHJhY2UgY29uZGl0aW9u
OyBpZiBzb21lb25lIHJlbW92ZWQgb3IgY2hhbmdlZCB0aGUNCisgICAgLy8g
ZmlsZSBhdCB0aGUgc2FtZSB0aW1lIHRoYXQgd2UgYXJlIGV4cHJlc3Npbmcg
aW50ZXJlc3QgaW4gaXQsDQorICAgIC8vIHJldm9rZSB0aGUgaW50ZXJlc3Qg
c28gd2UgZG9uJ3QgZ2V0IG5vdGlmaWNhdGlvbnMgYWJvdXQgY2hhbmdlcw0K
KyAgICAvLyB0byBhIHJlY3ljbGVkIGlub2RlIHRoYXQgd2UgZG9uJ3Qgb3Ro
ZXJ3aXNlIGNhcmUgYWJvdXQuDQorICAgIC8vDQorICAgIHN0cnVjdCBzdGF0
IHN0Ow0KKyAgICBpZiAoc3RhdHVzID09IE5VTEwpIHsNCisJc3RhdHVzID0g
JnN0Ow0KKyAgICB9DQorICAgIGlmICg6OnN0YXQobmFtZSwgc3RhdHVzKSA9
PSAtMSkgew0KKwlMb2c6OnBlcnJvcigic3RhdCBvbiBcIiVzXCIgZmFpbGVk
IiwgbmFtZSk7DQorCXJldm9rZShuYW1lLCBzdGF0LnN0X2Rldiwgc3RhdC5z
dF9pbm8pOw0KKwlyZXR1cm4gQkFEOw0KKyAgICB9DQorICAgIGlmIChzdGF0
dXMtPnN0X2RldiAhPSBzdGF0LnN0X2Rldg0KKwl8fCBzdGF0dXMtPnN0X2lu
byAhPSBzdGF0LnN0X2lubykgew0KKwlMb2c6OmVycm9yKCJGaWxlIFwiJXNc
IiBjaGFuZ2VkIGJldHdlZW4gZXhwcmVzcyBhbmQgc3RhdCIsDQorCQkgICBu
YW1lKTsNCisJcmV2b2tlKG5hbWUsIHN0YXQuc3RfZGV2LCBzdGF0LnN0X2lu
byk7DQorCXJldHVybiBCQUQ7DQorICAgIH0JDQorDQorICAgIExvZzo6ZGVi
dWcoInRvbGQgZG5vdGlmeSB0byBtb25pdG9yIFwiJXNcIiA9IGRldiAlZC8l
ZCwgaW5vICVkIiwgbmFtZSwNCisJICAgICAgIG1ham9yKHN0YXR1cy0+c3Rf
ZGV2KSwgbWlub3Ioc3RhdHVzLT5zdF9kZXYpLA0KKwkgICAgICAgc3RhdHVz
LT5zdF9pbm8pOw0KKyAgICByZXR1cm4gT0s7DQorfQ0KKw0KK0ROb3RpZnk6
OlN0YXR1cw0KK0ROb3RpZnk6OnJldm9rZShjb25zdCBjaGFyICpuYW1lLCBk
ZXZfdCBkZXYsIGlub190IGlubykNCit7DQorICAgIEZpbGVXYXRjaCAqZndh
dGNoOw0KKyAgICBEaXJXYXRjaCAqZHdhdGNoOw0KKyAgICANCisgICAgTG9n
OjpkZWJ1ZygicmV2b2tlKCkgbmFtZTogJXMsIGRldjogJXgsIGlubzogJXhc
biIsIG5hbWUsIGRldiwgaW5vKTsNCisNCisgICAgaWYgKCFpc19hY3RpdmUo
KSkNCisJcmV0dXJuIEJBRDsNCisNCisgICAgLy8gTG9va3VwIEZpbGVXYXRj
aCBieSBkZXY6aW5vLCBhbmQgaXRzIERpcldhdGNoLg0KKyAgICBmd2F0Y2gg
PSBsb29rdXBfZmlsZXdhdGNoIChkZXYsIGlubyk7DQorICAgIGR3YXRjaCA9
IGZ3YXRjaC0+ZGlyX3dhdGNoOw0KKyAgICANCisgICAgLy8gZGVsZXRlIEZp
bGVXYXRjaCwgaWYgbGFzdCBGaWxlV2F0Y2g6IGNsb3NlIGZkLCBkZWxldGUg
RGlyV2F0Y2gNCisgICAgTG9nOjpkZWJ1ZyAoIkRlc3Ryb3lpbmcgRmlsZVdh
dGNoIGZvciAoJXggJXgpXG4iLA0KKwkJKGludClmd2F0Y2gtPmZpbGVfZGV2
LCAoaW50KWZ3YXRjaC0+ZmlsZV9pbm8pOw0KKyAgICBGaWxlV2F0Y2ggKipw
Ow0KKyAgICBmb3IgKHA9JmR3YXRjaC0+d2F0Y2hlczsgKnA7IHA9JigqcCkt
Pm5leHQpDQorICAgIHsNCisgICAgICBpZiAoKnAgPT0gZndhdGNoKQ0KKwl7
DQorCSAgKnAgPSAoKnApLT5uZXh0Ow0KKwkgIGJyZWFrOw0KKwl9DQorICAg
IH0NCisgICAgdW5oYXNoX2ZpbGV3YXRjaChmd2F0Y2gpOw0KKyAgICBkZWxl
dGUgZndhdGNoOw0KKyAgICBpZiAoZHdhdGNoLT53YXRjaGVzID09IE5VTEwp
DQorICAgICAgew0KKwlMb2c6OmRlYnVnICgiRGVzdHJveWluZyBEaXJXYXRj
aCBmb3IgKCV4ICV4KVxuIiwNCisJCSAgICAoaW50KWR3YXRjaC0+ZGlyX2Rl
diwgKGludClkd2F0Y2gtPmRpcl9pbm8pOw0KKwljbG9zZShkd2F0Y2gtPmZk
KTsNCisJdW5oYXNoX2RpcndhdGNoKGR3YXRjaCk7DQorCWRlbGV0ZSBkd2F0
Y2g7DQorICAgICAgfQ0KKyAgDQorICAgIHJldHVybiBPSzsNCit9DQorDQor
DQordm9pZA0KK0ROb3RpZnk6OnJlYWRfaGFuZGxlcihpbnQgZmQsIHZvaWQg
KikNCit7DQorICAgIGNoYXIgcmVhZGJ1ZlsxMjhdOw0KKyAgICBEaXJXYXRj
aCAqZHc7DQorICAgIEZpbGVXYXRjaCAqZnc7DQorDQorICAgIGludCByYyA9
IHJlYWQoZmQsIHJlYWRidWYsIHNpemVvZiByZWFkYnVmKTsNCisgICAgaWYg
KHJjIDwgMCkNCisgICAgICAgIExvZzo6cGVycm9yKCJwaXBlIHJlYWQiKTsN
CisgICAgZWxzZQ0KKyAgICAgIHsNCisJd2hpbGUgKHF1ZXVlX2hlYWQgIT0g
cXVldWVfdGFpbCkNCisJICB7DQorCSAgICBmZCA9IGNoYW5nZV9xdWV1ZVtx
dWV1ZV9oZWFkXTsNCisJICAgIHF1ZXVlX2hlYWQgPSAocXVldWVfaGVhZCAr
IDEpICUgUVVFVUVTSVpFOw0KKwkgICAgDQorCSAgICBkdyA9IGxvb2t1cF9k
aXJ3YXRjaCAoZmQpOw0KKwkgICAgaWYgKGR3KQ0KKwkgICAgICB7DQorCQlM
b2c6OmRlYnVnKCJkbm90aWZ5IHNhaWQgZGV2ICVkLyVkLCBpbm8gJWxkIGNo
YW5nZWQiLA0KKwkJCSAgIG1ham9yKGR3LT5kaXJfZGV2KSwgbWlub3IoZHct
PmRpcl9kZXYpLCBkdy0+ZGlyX2lubyk7DQorCQlmb3IgKGZ3PWR3LT53YXRj
aGVzOyBmdzsgZnc9ZnctPm5leHQpDQorCQkgIHsNCisJCSAgICAoKmVoYW5k
bGVyKShmdy0+ZmlsZV9kZXYsIGZ3LT5maWxlX2lubywgQ0hBTkdFKTsNCisJ
CSAgfQ0KKwkgICAgICB9DQorCSAgfQ0KKyAgICAgIH0NCit9DQo=
---1345348566-795333630-992877943=:6187--


---End of forwarded mail from owner-fam@xxxxxxxxxxx

--
Source code, list archive, and docs: http://oss.sgi.com/projects/fam/
To unsubscribe: echo unsubscribe fam | mail majordomo@xxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>